Ciao a tutti,
Sto facendo le liste e ho fatto l'inserimento di un elemento in coda, ma quando vado a visualizzare la lista mi visualizza solo l'ultimo numero inserito, mentre nella procedura di inserimento in testa mi visualizza tutto correttamente..
Non riesco a capire..
Ecco il codice
Grazie.codice:#include <stdio.h> #include <malloc.h> #include <string.h> /* DICHIARAZIONE */ struct elemento { int inf; struct elemento *punt;//PUNTA AL PROSSIMO NODO }; elemento *p0; char sc; elemento *crealista(elemento *p0) { p0=NULL; return p0; } void crealista(elemento **p0) { *p0=NULL;//LISTA VUOTA } elemento *inserimentoInCoda(elemento *p0) { int num; printf("inserisci il numero:"); scanf("%d", & num); struct elemento *p; p=(elemento*)malloc(sizeof(elemento)); p->inf=num; if(p0==NULL)//VUOTA.. { p0=p; p->punt=NULL; } else //INSERIMENTO IN TESTA { struct elemento *h;//PUNTATORE AUSILIARIO h=p0; while(h->punt!=NULL) { h=h->punt;//ISTRUZIONE SCORRI LISTA } h->punt=p; p->punt=NULL; } } void visualizza_lista(struct elemento *p0) { printf("lista -> "); /* CICLO FINCHE' NON E' VUOTA */ while(p0 != NULL) { printf("[%d]", p0->inf); // VISUALIZZA L'INFORMAZIONE printf(" -> "); p0 = p0->punt; // SCORRE DI UN ELEMENTO } printf("NULL\n"); } main()//GESTIONE A MENU { p0=crealista(p0); do { system("cls"); printf("\t- MENU -\n"); printf("Premi 1 per inserire un numero in coda!\n"); printf("Premi 2 per visualizzare la lista.\n"); printf("Premi S per finire... \n "); scanf("%d", & sc); if(sc==1) {p0=inserimentoInCoda(p0);} if(sc==2) {visualizza_lista(p0);system("pause");} } while(sc!='s'); }