dnclover
05-05-2010, 17:38
Ciao a tutti,ho un problema,in pratica non riesco a capire come funzionano queste benedette liste concatenate! Ora ho un programma che in pratica inserisce mano a mano i numeri nella lista,ed č questo:
#include <stdio.h>
#include <stdlib.h>
struct nodo *crealista();
void printlista(struct nodo *p);
struct nodo
{
int dato;
struct nodo *next;
};
main()
{
struct nodo *start;
start=crealista();
printlista(start);
printf ("\n\n\n");
system("pause");
return 0;
}
struct nodo *crealista()
{
struct nodo *p,*start,*last;
int i,n,x;
start=NULL;
printf ("quanti nodi ha la lista?");
scanf ("%d",&n);
printf ("\n\n\ndigitare elementi:");
for (i=0;i<n;i++)
{
scanf ("%d",&x);
p=(struct nodo *) malloc(sizeof(struct nodo));
if (i==0)
start=p;
else
last->next=p;
p->dato=x;
p->next=NULL;
last=p;
}
return (start);
}
void printlista(struct nodo *p)
{
printf ("\n\n\n");
while (p!=NULL)
{
printf ("%d --->",p->dato);
p=p->next;
}
printf ("NULL\n");
return;
}
Purtroppo non riesco a capire proprio come funziona,soprattutto la parte della funzione "struct nodo *crealista" ...
Potete aiutarmi magari spiegandomi come funzionano le liste e descrivendomi (per favore nel modo pių chiaro possibile) come funziona il programma? Mi servirebbe anche solo la spigazione dell'intera funzione "struct nodo *crealista"...
Grazie a tutti!
#include <stdio.h>
#include <stdlib.h>
struct nodo *crealista();
void printlista(struct nodo *p);
struct nodo
{
int dato;
struct nodo *next;
};
main()
{
struct nodo *start;
start=crealista();
printlista(start);
printf ("\n\n\n");
system("pause");
return 0;
}
struct nodo *crealista()
{
struct nodo *p,*start,*last;
int i,n,x;
start=NULL;
printf ("quanti nodi ha la lista?");
scanf ("%d",&n);
printf ("\n\n\ndigitare elementi:");
for (i=0;i<n;i++)
{
scanf ("%d",&x);
p=(struct nodo *) malloc(sizeof(struct nodo));
if (i==0)
start=p;
else
last->next=p;
p->dato=x;
p->next=NULL;
last=p;
}
return (start);
}
void printlista(struct nodo *p)
{
printf ("\n\n\n");
while (p!=NULL)
{
printf ("%d --->",p->dato);
p=p->next;
}
printf ("NULL\n");
return;
}
Purtroppo non riesco a capire proprio come funziona,soprattutto la parte della funzione "struct nodo *crealista" ...
Potete aiutarmi magari spiegandomi come funzionano le liste e descrivendomi (per favore nel modo pių chiaro possibile) come funziona il programma? Mi servirebbe anche solo la spigazione dell'intera funzione "struct nodo *crealista"...
Grazie a tutti!