il problema è che tu passi lista (first) e nella funzione lo riassegni (while) facendolo puntare all' (pen)ultimo elemento e lo restituisci, sovrascrivendo lista (il tuo nodo radice)codice:lista=inserisciNodoInCoda(lista); Nodo* inserisciNodoInCoda(Nodo* first){ Nodo* tmp; tmp=(Nodo*)malloc(sizeof(Nodo)); if(tmp==NULL){ exit(-1); } tmp->info=3; tmp->next=NULL; while(first->next!=NULL){ first=first->next; } first->next=tmp; return first; }
Puoi ovviare facendo una copia di first e fare il ciclo su di essa non modificando first.
Tieni presente che nella tua funzione non tieni conto di fare un inserimento in coda nel caso lista sia null (vuota)

Rispondi quotando