allora, ho da letto come funzionano le liste...e i problemi iniziano gia a farsi sentire,
posto tutto il codice:
codice:#include <stdio.h> #include <stdlib.h> struct ele { int a; struct ele *next; }; struct lista { int num_ele; struct ele *top; }; void inizial (struct lista *lis); void ins_ele (int dato, struct lista *lis); void del_ele (struct lista *lis); int estrai(struct lista *lis); int leggi (struct lista *lis); main() { system("color 0a"); int i,j,k,h; struct ele *n; n =(struct ele *)malloc(sizeof(struct ele)); struct lista *p; p =(struct lista *)malloc(sizeof(struct lista)); inizial(&(*p)); printf("\n\n\tCaricamento della lista\n"); printf("Inserire il numero degli elementi che si desidera inserire:"); scanf("%d",&i); for (j=1;j<=i;j++) { printf("Inserire elemento:"); scanf("%d",k); ins_ele(k,&(*p)); }; system("cls"); printf("\n\n\tCaricamnt Eseguito.\n"); system("pause"); system("cls"); printf("\n\n\tEstrazione Lista:\n"); while (p->num_ele!=0) { h = estrai(&(*p)); printf("Elemento estratto: %d\n", h); /* Qui e il Problema*/ }; printf("\n\n"); system("pause"); }; void inizial(struct lista *lis) { lis->num_ele=0; lis->top=NULL; }; void ins_ele (int dato, struct lista *lis) { struct ele *n; n = (struct ele *)malloc(sizeof(struct ele)); if (n == NULL) { system("cls"); printf("\n\n\n\t\tMemoria non sufficente, il programma verra\' arrestato!\n\n\n\n\n"); system("pause"); exit(1); } n->a = dato; n->next =lis->top; lis->top = n; lis->num_ele++ ; }; void del_ele (struct lista *lis) { struct ele *n; lis->num_ele--; n=lis->top; lis->top=n->next; free(n); }; int leggi (struct lista *lis) { struct ele *n; lis->top=n; int b = n->a; return(b); }; int estrai(struct lista *lis) { struct ele *n; int z; n=lis->top; z=n->a; lis->top = lis->top->next; lis->num_ele--; free(n); return z; }
come si può ben notare e un classico programma per caricare e scaricare una lista..niente di che, il problema e allo scaricamento, infatti nel ciclo while in cui iene eseguita n volte la funzione estrai(struct lista *lis) la restituzione è la locazione di memoria di a [overo la variabile della struttura Elemento contenente il dato]
e da 2 ore ke ci sto sopra.....aiuto![]()

Rispondi quotando
