Bè, a meno che non mi sfugga qualcosa, la funzione per stampare non ha molto senso secondo me... Tu dici:Originariamente inviato da nicone 91
perchè con la prima stampa il primo elemento e con la seconda stampa tutti gli altri elementi
è un errore?
1) se p == NULL (lista vuota) stampa "Nessun contatto presente";
2) altrimenti stampa il primo elemento (ma NON sposta il puntatore nella lista, cioè punta ancora al primo elemento!);
3) in ogni caso (il ciclo è fuori dall'if e dall'else) stampi tutti gli elementi della lista;
Quindi a occhio il primo elemento dovrebbe venire stampato due volte!