ciao sto studiando un programma che permetta di creare una lista di stringhe concatenate
con lunghezza opzionale e successivamente le
stampi a video con una funzione ricorsiva ;
ora il problema è che la funzione ricorsiva ( ricerca) stampa a video solo l'ultimo elemento
della lista e non tutta
a questo punto mi chiedo dove sbaglio
questo è il codice ;
codice:================================ typedef struct { char value [11] ; struct list *next ; } list ; /* definisco la struttura */ typedef list *listPtr ; void inserisci ( listPtr *Head , char valore [] , int size ) ; void ricerca (listPtr headR ) ; int main () { listPtr Testa = NULL ; /* situazione iniziale non ci sono nodi */ int chooce ; char parola [10] ; int numeroStringhe = 0 ; printf ("scegli 1 per uscire o premi un tasto per cominciare \n\n" ) ; scanf ("%d" , & chooce ) ; while (chooce != 1 ) { fprintf (stdout , "\n\n") ; inserisci ( &Testa , parola , 10) ; numeroStringhe++ ; scanf ("%d" , & chooce ) ; } ricerca (Testa ) ; system ("PAUSE") ; return 0 ; } void inserisci ( listPtr *Head , char valore [] , int size ) { listPtr Nuovo ; Nuovo = malloc ( sizeof ( list ) ) ; if ( Nuovo != NULL ) { if ( *Head == NULL ) { *Head = Nuovo ; fprintf (stdout , "inserisci la stringa o 1 per terminare\n") ; gets ( Nuovo->value ) ; Nuovo->next = NULL ; } else { (*Head)->next = Nuovo ; fprintf (stdout , "inserisci la stringa o 1 per terminare\n") ; gets ( Nuovo->value ) ; Nuovo->next = NULL ; } } /* fine if */ } void ricerca ( listPtr headR ) { fprintf (stdout , "%s\n" , headR->value ) ; while (headR->next != NULL ) /* cicla finche ci sono elementi */ { headR = headR->next ; ricerca ( headR) ; } }
altra domanda ; qual'è il modo migliore secondo voi per capire sta benedetta ricorsione ?
grazie

Rispondi quotando