Quote:
Originariamente inviato da guylmaster
...
Praticameente questa prima crea il nuovo nodo, poi però dice "newnode->next = node->next;" che significa? cioè il sucessivo di newnode è se stesso? non mi torna.
...
|
Quella funzione fa l'inserimento DOPO il nodo che gli passi come parametro, che può essere l'ultimo, come il primo.
Per semplicità, immaginiamo che tu voglia inserire dopo il primo elemento (quindi in seconda posizione). Quale sarà il successore del nuovo nodo, cioè quello che ORA dovrà essere in terza posizione? Quello che PRIMA era in seconda posizione, quindi nodo_dopo_il_quale_inserire->next. Per questo fai newnode->next=node->next;
L'istruzione node->next=newnode, invece serve per indicare che il successore del nodo è il nuovo nodo creato. Spero di essere stato chiaro..
A->C->D;
devi inserire B dopo la A, quindi chiami insert_after(&A,&B).
A questo punto crei il nodo con i dati di B (lo chiamo B per semplicità). Chi sarà il successore di B? C, quindi A->next. E il successore di A? B. Con l'esempietto dovrebbe essere decisamente più semplice da capire di quanto ho scritto sopra!