Qui c'è sicuramente un errore
cosa succede quando, con il progressivo aggiornamento di curr, questo diventa NULL per il raggiungimento della coda? La dereferenziazione "curr->nome" non è più lecita e il programma crasha.codice:while(strcmp(nome, curr->nome) > 0){ prec = curr; curr = curr->next; }
Prova a modificare così:
codice:while(curr && strcmp(nome, curr->nome) > 0){ prec = curr; curr = curr->next; }