La funzione LDat è errata perche scorre la lista senza fermarsi quando la lista è terminata:
mentre dovrebbe esserecodice:while(cd < L->coD){ prev = L; L = L->next; }
codice:while(L && (cd < L->coD)){ prev = L; L = L->next; }cioè se (p->next)->next è NULL lo imposti a NULL...mentre te devi impostare a NULL p->next e devi deallocare p->next, non (p->next)->next. Poi qualke piccola ottimizzazione, che più che altro serve a rendere piu compatto il codice e piu leggibile, ad esempio se il nodo lo devi aggiungere alla lista puoi crearlo una sola volta all'inizio prima di fare i 3 if, e non crearlo all'interno di ogni if.codice:Un altro errore sta nel caso in cui devi eliminare l'ultimo elemento della lista perche scrivi. /* Se l'elemento puntato da (p->next)->next è NULL (non esiste)... else if((p->next)->next == NULL && (p->next)->coD == codcor){ (p->next)->next = NULL; /* Setta a NULL il campo next del nodo

Rispondi quotando