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
)
o de
rotacions a la dreta (si
).
El punt d’interès no es modifica (segueix apuntant al mateix element que
apuntava abans de la rotació). Assumiu que
.
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).
El mètode rep un enter .
El mètode rota la llista del paràmetre implícit posicions segons la polaritat d’.
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