Salve,vorrei un aiuto per correggere la mia implementazione...
premetto che sono alle prime armi con c... ,cosa c'è che non va nel codice???

codice:
/* Accetta in ingresso una sequenza di interi e li memorizza in una lista.Il numero di interi che compongono la sequenza è stabilito dall'utente*/  #include <stdio.h> #include <malloc.h>      //STRUTTURA DEGLI ELEMENTI DELLA LISTA,CHE SARANNO DEI NODI COLLEGATI     struct nodo{      int inf;  // IL TIPO NODO è UNA STRUTTURA COMPOSTA DA 2 CAMPI: UN CAMPO INFORMAZIONE(IN QUESTO CASO DI TIPO INTERO) E UN CAMPO NEXT      struct nodo *next; //CHE è UN PUNTATORE ALLA STRUTTURA STESSA,IN PARTICOLARE AL PROSSIMO NODO DELLA LISTA };  struct nodo *crea_lista(); //dichiaro il metodo crea lista  void visualizza_lista(struct nodo *);// e il metodo visualizza lista  int main(int argc, char *argv[]) {    struct nodo *testa_lista; //mi creo il primo nodo che punterà alla testa della lista     testa_lista= crea_lista(); //il metodo crea lista restituisce la testa della lista(nodo),in questo modo creiamo la list     visualizza_lista(testa_lista);//stampiamo la lista,il metodo richiede il puntatore al primo nodo della lista per la stampa     printf("\n");     return (0); }      //ADESSO REALIZZIAMO I METODI   /*PARTIAMO CON IL METODO CREA LISTA CHE RESTITUISCE IL PUNTATORE ALLA TESTA DELLA LISTA,   per questo avremo:                                 struct nodo *crea_lista()       DA QUI SI SPIEGA L'ASTERISCO(perchè restituisce un puntatore)*/                                struct nodo *crea_lista() {     struct nodo *nuovo;//mi creo il nuovo nodo     struct nodo *corrente;//me ne creo un'altro di supporto     int dim;//dimensione della lista     int cont;//contatore per il for     printf("specifica la dimensione della lista:  ");     scanf("%d", &dim);     if(dim ==0) nuovo=NULL;     else     {//se la lista non è vuota creo il primo elemento             nuovo =(struct nodo *)malloc(sizeof(struct nodo));              printf("\nInserisci il primo valore: ");             scanf("%d", &nuovo->inf);             corrente = nuovo;             for(cont=2; cont<=dim; cont++)             {                 corrente->next = (struct nodo *)malloc(sizeof(struct nodo)); //SI NOTI CHE SI TRATTA DELL'INSERIMENTO IN CODA                 corrente= corrente->next;                 printf("\nInserisci il valore del nodo: ");                 scanf("%d", &corrente->inf);             }//chiudo il for                 corrente->next= NULL;     }//chiudo else        return(nuovo);//testa lista  }   //chiudo la funzione   // CREIAMO IL METODO NECESSARIO PER STAMPARE LA LISTA CHE PRENDE IN INPUT LA TESTA DELLA LISTA(si noti che non c'è nessun asterisco  //perchè in questo caso testituisce un void e non un puntatore come prima,invece prende in input un puntatore!!!!!)  void visualizza_lista(struct nodo *testa) {     while(testa!=NULL)     {         printf("%d", testa->inf);         printf("-->");         testa= testa->next;//scorro il nodo in avanti     }         printf("NULL\n"); }

Grazie...