PDA

Visualizza la versione completa : [ C ] Lista inserimento in coda problema di visualizzazione


faza
30-01-2014, 20:13
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



#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');


}



Grazie.

Scara95
30-01-2014, 20:29
Un .doc? :O
Mi stupisco se compila!
Devi copiare il codice e incollarlo dento i tag [ C O D E ] [ / C O D E ]

faza
30-01-2014, 20:43
Ok grazie, fatto!

Rotang14
04-02-2014, 15:15
Io sto studiando il C in questo periodo, quindi il mio suggerimento prendilo con le pinze, ma prova a salvare l'indirizzo dell'elemento a cui punta inizialmente il puntatore alla lista e, a fine degli inserimenti in coda, far puntare nuovamente il puntatore al primo elemento a tale indirizzo.

Loading