hai ragione manco mezzo commento ho scritto
allora :
codice:
struct elemento *crealista(){
       char c;
       struct elemento *p;
       printf("Vuoi inserire degli elementi? \n");
       scanf("%c" , &c);                                //prima interrogazione da parte dell input avvia il programma se premi 's'
       if(c == 'n'){
           p=NULL;
            }
       else if(c == 's'){
            while(c == 's'){                           //se premi 's' fino a che non cambi il valore di c ( = 's')
            p=(struct elemento*)malloc(sizeof(struct elemento));              //fai posto
            printf(" inserisci elemento : ");
         *   scanf("%d" , & p->info);                                           //inserisci informazini
         *     scanf("%c", &c);                                                       // leggi da input un nuovo valore per chiedere se si vuole continuare o meno
            if( c == 'n' )
            p->next=NULL;
            else
            p->next=crealista();
            }
            }
            return (p);
            }
nell altro codice quando vado ad eseguire, inserisco i campi, e quello che accade è che, dopo aver inserito l ultimo campo, il programma non torna ricorsivamente come fa questo! in parole povere (*) scanf("%d", & p->info); inserisce un elemento subito dopo aver inserito "info" questo torna all inizio del programma chiedendomi se voglio aggiungere un altro elemento

il secondo codice, da cui ho preso la stessa struttura, all inserimento dell' ultimo dato non mi torna all inizio del programma come fa questo...

[CODE]
struct ospite *crealista(){
struct ospite *p;
char nome[50];
char c;
int stanza;
printf("premi s per iniziare \n");
scanf("%c", &c);
printf("crea ospite \n");

if( c == 'n'){
p=NULL;
}
else if( c == 's' ){
while(c == 's'){
p=(struct ospite*)malloc(sizeof(struct ospite));
printf(" Nome e cognome : ");
scanf("%s", nome);
strcpy( p->nome , nome);
printf( " numero di stanza : ");
scanf("%d",& p->stanza);
printf(" data di entrata : \n");
printf("giorno :");
scanf("%d", & p->checkin.giorno);
printf("\n mese : ");
scanf("%d", & p->checkin.mese);
printf("\n anno : ");
scanf("%d", & p->checkin.anno);
printf(" data del logout ? \n");
printf("giorno :");
scanf("%d", & p->checkout.giorno);
printf("\n mese : ");
scanf("%d", & p->checkout.mese);
printf("\n anno : ");
scanf("%d ", &p->checkout.anno);
scanf("%c", &c);
if(c == 's')
p->next=crealista();
if( c== 'n')
p->next=NULL;
}
}
return(p);
}
[/CODE ]