View Single Post
Old 28-05-2012, 17:06   #5
Bandit
Senior Member
 
L'Avatar di Bandit
 
Iscritto dal: Sep 2003
Messaggi: 9431
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
__________________
1)P4 2.4-Asrock p4i65- Sapphire Hd3450 512mb agp- 2GB ddr400-Hd 80gb WD- Thermaltake Litepower 450W
2)Amd 3200-Msi K8n Neo4 Platinum - 2*512 MB pc3200-Asus N6600gt- HD WD 160GB-enermax noisetacker 370.

Ultima modifica di Bandit : 28-05-2012 alle 17:22.
Bandit è offline   Rispondi citando il messaggio o parte di esso