Studiando le liste a scuola siamo arrivati all'inserimento di valori in una lista e alla visualizzazione dei valori...ma provando il programma datomi a casa non funge, e applicandomi a tavolino credo di aver individuato il problema.
Il programma è il seguente:
codice:#include <stdio.h> #include <iostream.h> #include <conio.h> #include <stdlib.h> /* INIZIO DICHIARAZIONE */ struct lista{ int n; lista* pt; }; lista* first=NULL; int x; char risposta; void inserisci_in_lista(lista*,int); void visualizza_lista(lista*); /* FINE DICHIARAZIONE */ int main() { do{ cout<<"Inserisci un valore da inserire nella lista : "; cin>>x; inserisci_in_lista(first,x); cout<<"\nVuoi continuare l'inserimento di valori nella lista? (s/n) : "; cin>>risposta; }while(risposta=='s'); visualizza_lista(first); getch(); return 0; } void inserisci_in_lista(lista* lx, int val){ if(lx==NULL){ lx=new(lista); lx->n=val; lx->pt=NULL; } else inserisci_in_lista(lx->pt,val); } void visualizza_lista(lista* lx){ if(lx!=NULL){ cout<<lx->n; visualizza_lista(lx->pt); } }
In rosso le parti che non mi convincono:
Nella prima, riguardo al passaggio di first, credo proprio che sia sbagliato, in quanto poi io passo sempre e solo first e non faccio assolutamente riferimento ai successivi nodi della lista...quindi cosa dovrei mettere?
la seconda questione riguarda la chiamata ricorsiva...ma a che mi serve nell'inserimento quella ricorsione se io nn vedrò mai l'else?

Rispondi quotando