il fatto è che se lo devo riprodurre lo devo capire
e purtroppo non l'ho capito ancora.
Come mi immagino prec e succ?
il primo è un puntatore che inizializzo alla testa della lista.
il secondo che ne faccio? come si muove?
il while () mi dice che : mentre il puntatore prec accede ai secondi campi dei record, e fino a che questi puntano ad un primo campo del record < del primo campo del nuovo record. concordi?
finchè avviene tutto ciò, " prec=prec->punt " cioè assegno a prec i secondi campi dei record che son diversi da zero
e con " succ=prec->punt " assegno a succ i secondi campi dei record.
E da qui nasce la domanda: come si differenziano i due puntatori prec e succ? dopo questa istruzione non sono uguali?
però poi le due ultime istruzioni :
-assegnano succ al secondo campo del record nuovo
-assegnano q al secondo campo del record nuovo
cmq non mi torna
Provo ad inserire questae append che inserisce in coda avendo un il solo puntatore temp ma cmq non mi è tanto chiaro
Codice:
// append versione iterativa
void append(L& l,const E & e) {
if(l==0) push(l,e);
else {
L temp=l;
L q=new Record; //alloca spazio
q->elem=e; //vi pone e
q->punt=0; // e' l'ultimo elemento della lista
while(temp->punt) temp=temp->punt; //scorre la lista, si ferma sull'ultimo elemento
temp->punt=q; //lo mette in coda alla lista
} //fine if
}
se il puntatore in testa alla lista è pari a 0 allora fai un'operazione di push
oppure
inizializza un altro puntatore a record "temp" al puntatore in testa, e crea un altro record q nel quale setto i due suoi campi a "e" e "0"; mentre "temp" accede al secondo campo dei record, assegna a temp il secondo campo dei record. Ma che vuol dire questo? nei commenti c'è scritto che si ferma all'ultimo elemento e perchè?
assegna q (il puntatore del nuovo record) a temp, in modo da metterlo in coda