Implementeu una funció RECURSIVA que, donada una pila P
com a paràmetre (ordenada de fons cap amunt, i potser amb repeticions),
retorna una pila R
que conté tots els valors
que hi ha a P
sense repeticions.
La funció és aquesta:
stack<int> uniq(stack<int> s);
P
= [a1,a2, … ,an] i
∀i = 1n−1 ai ≤ ai+1.R
= [b1, b2, …, bm]
tal que ∀i = 1m bi < bi+1 i a més
∀i = 1n ai ∈ R
.
És a dir, R
conté tots els valors que hi ha a P
sense repeticions i en el mateix ordre.Aquí tenim uns exemples de comportament de la funció:
uniq([1 2 2 2 3 5 5 5 5]) = [1 2 3 5] uniq([1 2 3 4]) = [1 2 3 4]
Observació Només cal enviar el procediment demanat; el programa principal serà ignorat.
Observació
La vostra funció i subfuncions que creeu han de treballar només amb piles. Heu de trobar una solució RECURSIVA i eficient del problema. En particular, no hi hauria d’haver cap bucle en cap de les funcions que implementeu. Si creeu funcions auxiliars, afegiu-hi les seves PRE/POST. En les crides recursives, incloeu la funció de fita/decreixement.
Avaluació sobre 10 punts:
Coses que poden restar punts a la puntuació anterior:
Input/Output