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