Tieni a mente che nell' unione le due liste (almeno per mantenere un pò di coerenza con gli operatori) non dovrebbero essere modificate cioè:
Qui l3 viene modificato (in questo caso anche inizializzato) ma l1 e l2 no. Quindi l' overload dell' operatore + dovrebbe prendere come input le due liste da unire e restituire una nuova lista (l' unione tra le due d' input) ... Ovvero:codice:lista l1, l2; // Immagazzinamento dati liste; lista l3 = l1 + l2;
Nota che in questo codice ho fatto assunzione che ci sia un metodo AddNode il cui scopo dovrebbe essere semplice da capire (e anche la presenza di un costruttore di copia appropriato) ...codice:lista lista::operator+ ( const lista& left ) { lista unionList; /* Copia i dati della prima lista */ nodo currNode = l; while( currNode != NULL ) { unionList.AddNode(currNode->valore ); currNode = currNode->succ; } /* Copia i dati della seconda lista */ currNode = left.l; while( currNode != NULL ) { unionList.AddNode( currNode->valore ); currNode = currNode->succ; } return unionList; }
EDIT : SCUSA PER LE CONTINUE MODIFICHE

Rispondi quotando