Salve a tutti, ho un problema con l'inserimento di un nuovo nodo in coda ad una lista.
Una volta lanciato, appena inserisco il valore, il programma non risponde più, ed esce il classico messaggio "l'applicazione ha smesso di funzionare".

Ho isolato la funzione dal programma principale, ad un nuovo codice, ma la storia è la stessa.

Spero possiate darmi una mano voi. Questo è il codice:

codice:
#include <stdio.h>
#include <stdlib.h>


struct nodo {                   /* dichiarazione struttura nodo */
       int dato;                // campo dell'informazione 
       struct nodo *next;       // campo dell'indirizzo del nodo successivo
       };


nodo *head;                     // dichiarazione del nodo di testa
int n;                          // dato da inserire
nodo *nuovo;                    // nuovo nodo
nodo *p;                        // puntatore indice


int main()
{
         head = NULL;                        // creazione della lista
         printf ("\n Nuovo inserimento: ");
         scanf ("%d", &n);                   // leggi numero da inserire
         
         nuovo = (nodo*)malloc(sizeof(struct nodo)); //alloca nuovo nodo
           
         nuovo->dato = n;                    // inserisci N in nodo.dato
         nuovo->next = NULL;                 // NUOVO punta a NULL.
         p=head;                             // P punta al nodo di testa
           
         while (p != NULL)                   // finché la lista non è finita
         { p = p->next; }                    // P punta la nodo successivo
          
         p->next = nuovo;                     // l'ultimo nodo punta a NUOVO
         system("pause");
         return 0;                
}
Grazie a tutti in anticipo.