salve.
sto guardando la soluzione di un esercizio in c data una lista la cancella tutta ricorsivamente.
questo e il codice.
quello che non capisco e come fa a eliminare la lista.codice:void delete_list(link head) { if(head_of_list->next)// testa della lista delete_list(head_of_list->next); delete_node(head_of_list); } // // funzione ausiliaria di delete_list // void delete_node(link node){ node->next = NULL; node->value = -1; free(node); }
nel senso fino a che head->next e vero entra nell'if e richiama ricorsivamente la funzione spostandosi nel prossimo elemento.
mentre la funzione delete_node lo richiama solo quando arriva all'ultimo elemento perche head->next e falso, quindi elimina solo l'ultimo elemento mentre degli altri restano liberi in memoria...
mi potreste delucidare le idee ?? ce un modo piu facile per eliminare la lista ricorsivamente ?