Ho trovato questo codice funzionante.
Ci sono però dei passaggi che non ho capito:
codice:
lista::lista(const lista& L) {
nodo *p, *q, *r; //definisco tre nuovi nodi: p=L.l (non ho capito), q sarà il nodo della
//lista copia ed r un nodo di appoggio per costruire la copia.
p = L.l; //Perchè??
l = 0;
if (p == 0) // Verifico se ci sono elementi da copiare o la lista è vuota
cout << "Lista vuota...\n";
else
while (p != 0) { //Scorro la lista
q = new nodo; //Alloco il nuovo nodo q
if (l == 0) //Effettuo la copia del primo elemento.
l = q; //Domanda: perchè usa l e non p?
else
r->succ = q; // Se non è il primo elemento, procedo con un inserimento
q->valore = p->valore; //in testa
p = p->succ; //Passo all'elemento successivo
r = q;
}
q->succ = 0; //L'ultimo valore della lista copia punta a null.
}