Feu el mètode
void rota (int);
de la classe Llista
, la capçalera de la qual és al fitxer llista.hpp
.
Quan cridem aquest mètode:
L.rota(n);
on L
és una llista de tipus Llista
doblement enllaçada, sense fantasma i
amb punt d’interès,
la llista L
es modifica per l’aplicació d’n
rotacions a l’esquerra (si n > 0)
o de abs(n) rotacions a la dreta (si n < 0).
El punt d’interès no es modifica (segueix apuntant
al mateix element que apuntava abans de la rotació).
Assumiu que n ≠ 0.
Podeu imaginar que l’anterior del primer element de la llista
és l’últim element, i que el següent element del darrer element de la llista
és el primer element (com si fos un cercle),
i que moveu el punter al primer element n
posicions
(tenint en compte la polaritat d’n
).
Fixeu-vos que si incrementeu aquest punter imaginari una posició (n = 1
),
llavors esteu rotant a l’esquerra, i que si el decrementeu una posició (n = -1
)
esteu rotant a la dreta.
Tingueu en compte que la mida de la llista L
serà sempre la mateixa,
independentment de les rotacions que se li apliquin.
Podeu assumir que la llista L
no és buida
(dit altrament: podeu posar a la pre del mètode que el paràmetre
implícit té alments un element).
Entrada
El mètode rep un enter n ≠ 0.
Sortida
El mètode rota la llista del paràmetre implícit n posicions segons la polaritat d’n.
Observació
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar rota_llista.cpp
Observeu que per compilar us donem el Makefile
,
la classe Llista
amb tots els seus mètodes implementats
(excepte rota
) i el programa principal program.cpp
.
Input
10 2 4 6 8 10 12 14 16 18 20 -2 -4 -2 3 1 15
Output
2 4 6 8 10 12 14 16 18 20 Rotació (-2): 18 20 2 4 6 8 10 12 14 16 18 20 2 4 6 8 10 12 14 16 Rotació (-4): 10 12 14 16 18 20 2 4 6 8 10 12 14 16 18 20 2 4 6 8 Rotació (-2): 6 8 10 12 14 16 18 20 2 4 6 8 10 12 14 16 18 20 2 4 Rotació (3): 12 14 16 18 20 2 4 6 8 10 12 14 16 18 20 2 4 6 8 10 Rotació (1): 14 16 18 20 2 4 6 8 10 12 14 16 18 20 2 4 6 8 10 12 Rotació (15): 4 6 8 10 12 14 16 18 20 2
Input
4 4 2 5 3 2 -3 4
Output
4 2 5 3 Rotació (2): 5 3 4 2 5 3 4 2 Rotació (-3): 3 4 2 5 3 4 2 5 Rotació (4): 3 4 2 5