Ciao a tutti. Ho un problema con un funzione che utilizza le liste dinamiche.

Il tipo che ho dichiarato sono questi:

codice:
typedef struct el{
        int dato;
        struct el*prox;}nodo;

typedef nodo*lista;
il prototipo della funzione è:

codice:
void fattori(int,lista*);
la funzione in se calcola, preso un intero, i suoi divisori; la funzione è:

codice:
void fattori(int val,lista*L){
     int i;
     lista nuovo,curs;
     curs=*L;
     for(i=1;i<=val;i++){
     if(val%i==0){

     nuovo=(lista)malloc(sizeof(nodo));
     nuovo->dato=i;
     nuovo->prox=NULL;

                  if(*L==NULL){
                               *L=nuovo;
                               printf("%d",i);}
                  else{
                       while(curs->prox!=NULL)
                       curs=(curs->prox);
                       curs->prox=nuovo;
                       printf("%d",i);}
                  }
}}
Se mi spiegate dove sbaglio ve ne sarei davvero grato. Ciao e grazie!!