Metti la dichiarazione della struttura e del tipo, fuori dal main.
Il puntatore all'inizio della lista, deve essere NULL in partenza ...
Non fare differenza tra il primo elemento e i successivi (x e y) ... Utilizza un solo ciclo.
Questa istruzione
x=nuovo->dato
significa il contrario di quello che vuoi fare ...
La liberazione della memoria con la free, è sbagliata. Esistono tanti elementi allocati ...