Còpia d'una cadena de nodes doblement encadenats X97290


Statement
 

pdf   zip   tar

html

Considerem la representació habitual amb nodes de la classe Llista per manegar llistes genèriques d’elements de tipus T que podeu trobar als fitxers publics.

Els nodes són 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’ultim (ultim_node) i un altre per l’element actual (act), on tenim situat el punt d’interès de la llista.

Recordeu que si l’act d’una llista no buida té valor null significa que el punt d’interès està situat a la dreta de tot, a sobre d’un element fictici posterior a l’últim element real.

Volem implementar dins d’aquesta classe la versió iterativa d’una nova operacióamb la següent especificació pre/post:

node_llista* copia_node_llista_it (node_llista* m, node_llista* oact,
         node_llista* &u, node_llista* &a)
/* Pre: cert */
/* Post: si m és NULL, el resultat, u i a són NULL; en cas
       contrari, el resultat apunta al primer node d'una cadena de
       nodes que són còpia de la cadena que té el node apuntat per m
       com a primer, u apunta a l'últim node, a és o bé NULL si oact
       no apunta a cap node de la cadena que comença amb m o bé apunta
       al node còpia del node apuntat per oact */

i redefinir l’operador d’assignacio de tal manera que utilitzi aquesta operacio per fer l’assignacio:

Llista& operator=(const Llista& original) 
    /* Pre: cert */
    /* Post: El p.i. passa a ser una còpia d'original i qualsevol
       contingut anterior del p.i. ha estat esborrat (excepte si el
       p.i. i original ja eren el mateix objecte) */
  

Implementeu aquestes operacions accedint directament als atributs de la classe Llista, sense utilitzar cap de les operacions públiques. L’única operació de la classe que podeu fer servir és esborra_node_llista_it

Observació

Només s’ha d’enviar un fitxer de nom “program.hh”que contengui la funció amb la capçalera de l’enunciat, la redefinicio de l’operador assignació i qualsevol altra funció auxiliar que cregueu convenient, sense la funció main i sense posar-hi cap “include”.

Information
Author
Xavier Messeguer
Language
Catalan
Official solutions
Unknown. This problem is being checked.
User solutions
C++