Salve !
Il professore di linguaggio C ci ha chiesto di completare e correggere un esempio di lista di nodi. Riscontro un problema quando intendo rimuovere il nodo testa, verificandosi un problema di puntatori. Il codice è questo :
Potete cortesemente aiutarmi a fixare l' errore ?codice:#include <stdio.h> #include <stdlib.h> typedef struct nodolista { int KEY; struct nodolista *next; } nodolista; nodolista* aggiungiintesta(int key, nodolista*); void visualizzalista(nodolista*); void rilascianodo(nodolista*); int main() { nodolista *testa; testa = calloc(1, sizeof(nodolista)); testa = aggiungiintesta(3, testa); printf("\n"); visualizzalista(testa); testa = aggiungiintesta(2, testa); printf("\n"); visualizzalista(testa); testa = aggiungiintesta(1, testa); printf("\n"); visualizzalista(testa); printf("\n"); rilascianodo(testa); visualizzalista(testa); system("PAUSE"); return 0; } nodolista* aggiungiintesta(int key, nodolista *testa) { nodolista *ptr; ptr = calloc(1, sizeof(nodolista)); if(ptr == NULL) { printf("Memoria insufficiente !\n"); return NULL; } ptr -> next = testa; //ptr[val|pun ---> testa testa = ptr; ptr -> KEY = key; return ptr; } void rilascianodo(nodolista* ptr) { nodolista *p; p = calloc(1, sizeof(nodolista)); while(ptr) { p = ptr -> next; free(ptr); ptr = p; } } void visualizzalista(nodolista* ptr) { while(ptr) { printf("[%d]", ptr -> KEY); if(ptr -> next != NULL) printf(" ---> "); ptr = ptr -> next; } }
Grazie in anticipo !

Rispondi quotando
lol !! Già hai proprio ragione. Ho capito adesso il mio errore e il pregio del suo codice lollol !
