Allora, poniamo in essere che vada inserisci, essendo una lista, secondo me sarebbe meglio se utilizzassi una funzione ricorsiva del tipo.

codice:
void stampa(Elemento* a)
{
     if(a==NULL)  return;
     else
     {
            printf(Nome....ecc ecc .....);

            stampa(a->next);
     }

}
dovrebbe funzionare (se inserisci i dati corettamente)

PS: ma se hai definito un tipo contatto strutturato, perchè poi quando fai inserisci il nome non lo salvi in contatto->nome?