Donada la classe que permet guardar seqüències d’enters amb una llista doblement encadenada, sense fantasma, no circular i amb punt d’interès, cal implementar el mètode
void inverteix();
/* Pre: cert */
/* Post: S'ha invertit l'ordre dels elements del p.i.
El punt d'interes apunta al mateix element.
Exemple: [4 5 2 1] => [1 2 5 4] */
que inverteix l’ordre dels elements del paràmetre implícit. El punt d’interès apunta al mateix element que abans.
Els nodes de la classe
estan doblement encadenats amb punters al següent (seg) i a
l’anterior (ant). Una llista té quatre atributs: la
longitud i tres punters a nodes, un pel primer element
(primer_node), un per l’últim (ultim_node) i
un altre per l’element actual (act), on tenim situat el
punt d’interès de la llista.
Com a entrada hi haurà una llista amb punt d’interès: el nombre de vegades que cal avançar el punt d’interès respecte el primer element, el nombre d’enters de la llista i els enters que la formen.
Per llegir les llistes, s’ha utilitzat l’operador
>> que es troba definit a la classe
Llista.
Com a sortida es mostrarà la llista original. A continuació es mostrarà la llista desprès d’haver-la invertit una vegada i desprès d’haver-la invertit 1000 vegades (en cada cas es mostraran tots els elements de la llista recorrent-la del primer a l’últim i recorrent-la de l’últim al primer).
Per escriure les llistes, s’ha utilitzat l’operador
<< que es troba definit a la classe
Llista.
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar llista_inverteix.cpp
Observeu que per compilar us donem el Makefile, la
classe Llista amb tots els seus mètodes implementats
excepte inverteix i el programa principal
program.cpp.
Input
1 4 4 5 2 1
Output
[4,(5),2,1]> [1,2,(5),4]> [4,(5),2,1]< [4,(5),2,1]> [1,2,(5),4]<
Input
3 3 7 2 3
Output
[7,2,3]> [3,2,7]> [7,2,3]< [7,2,3]> [3,2,7]<
Input
0 1 8
Output
[(8)]> [(8)]> [(8)]< [(8)]> [(8)]<