Moure elements d’una llista doblement encadenada al final, usant memòria dinàmica

Donada la classe Llista que permet guardar seqüències ordenades d’enters amb una llista doblement encadenada, sense fantasma, no circular i amb punt d’interès, cal implementar el mètode

void moure_x_darrera(const int &x);
/* Pre: El p.i. es una llista L i i el seu punt d'interes
   referencia a la dreta del tot */
/* Post: El p.i. s'ha modificat movent totes les aparicions
   d'x al final, mantenint la resta d'elements en el seu
   ordre; el punt d'interes referencia la primera aparicio d'x,
   si hi era, altrament el punt d'interes no canvia */

que desplaça tots els elements iguals a xx de la llista paràmetre implícit al final, mantenint l’ordre de la resta d’elements de la llista. Si la llista conté algun element igual a xx, el punt d’interès referencia a la primera aparició de xx dins la llista; altrament, el punt d’interès no canvia.

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 el punt d’interès situat a la dreta de tot, i a con­ti­nua­ció hi haurà un o més enters addicionals. Per l’entrada de la llista es donen el nombre d’enters nn de la llista i nn 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ó, per cada enter xx addicional, es desplaçaran els elements iguals a xx al final de la llista i es mostrarà la llista resultant. D’un enter xx al següent, s’usarà la llista modificada en el pas anterior.

Per escriure una llista, es recorren i mostren els seus elements del primer a l’últim, i després de l’últim al primer. L’element referenciat pel punt d’interès, en cas que n’hi hagi, apareix entre parèntesis. Per escriure les llistes, s’ha utilitzat l’operador << que es troba definit a la classe Llista.

Observació

Feu la solució usant els atributs privats de la classe Llista en lloc dels mètodes públics.

Heu d’enviar la solució comprimida en un fitxer .tar:

tar cvf program.tar llista_moure_x_darrera.cpp

Observeu que per compilar us donem el Makefile, la classe Llista amb tots els seus mètodes implementats excepte moure_x_darrera i el programa principal program.cpp.

Informació del problema

Autoria: Neus Català

Generació: 2026-01-25T21:03:03.556Z

© Jutge.org, 2006–2026.
https://jutge.org