Donada la classe Llista 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
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 Llista 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.
Entrada
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
.
Sortida
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
.
Observació
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)]<