-
Qualcuno può aiutarmi con le struttureScritto daNon Autenticatoil 2010-05-05 17:57:00.0 alle 2010-05-05 17:57:00.0ricorsive? Non riesco proprio a capirle.Mi potete descrivere questo programma? Grazie mille!
#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;
}
-
Re: Qualcuno può aiutarmi con le struttuNon vedo ricorsivita` nel listato.

Comunque la ricorsione e` presto spiegata come da dizionario: "se ancora non l'hai capita, vedi voce ricorsione".-
Re: Qualcuno può aiutarmi con le struttuScritto daNon Autenticatoil 2010-05-05 19:57:00.0 alle 2010-05-05 19:57:00.0
- Scritto da: alex.tg
> Non vedo ricorsivita` nel listato.
>
> Comunque la ricorsione e` presto spiegata come da
> dizionario: "se ancora non l'hai capita, vedi
> voce
> ricorsione".
Scusa non è la ricorsione,ma una lista concatenata.
Mi puoi spiegare cosa fa il programma? In modo chiaro per favore.
Grazie-
Re: Qualcuno può aiutarmi con le struttu"Chiaro" e` un concetto soggettivo, fra l'altro so di non essere granche` bravo a spiegare qualcosa.
Comunque, definisce una struttura che applica a ogni nodo di una lista concatenata. Ogni nodo ha un puntatore al nodo successivo nella heap del programma. All'inserimento dei dati, ogni elemento viene allocato con malloc, che ritorna un indirizzo sulla heap: il suo valore di ritorno immagazzinato nel puntatore "start" nel corso della prima iterazione del ciclo che richiede i dati (per n==0); nelle iterazioni successive, l'indirizzo dei nodi seguenti viene registrato nel campo "next" dell'ultimo nodo inserito (puntato da "last" che viene assegnato alla fine di ogni iterazione). "p->next" viene inizializzato a "NULL" dopo ogni inserimento, in modo che l'ultimo nodo inserito non abbia un successivo (infatti, il ciclo in "printlista" procede mentre "p->next" non e` nullo).
Um... spero sia comprensibile, anche perche` devo andare a cena...-
Re: Qualcuno può aiutarmi con le struttuScritto daNon Autenticatoil 2010-05-05 20:10:00.0 alle 2010-05-05 20:10:00.0
- Scritto da: alex.tg
> "Chiaro" e` un concetto soggettivo, fra l'altro
> so di non essere granche` bravo a spiegare
> qualcosa.
>
> Comunque, definisce una struttura che applica a
> ogni nodo di una lista concatenata. Ogni nodo ha
> un puntatore al nodo successivo nella heap del
> programma. All'inserimento dei dati, ogni
> elemento viene allocato con malloc, che ritorna
> un indirizzo sulla heap: il suo valore di ritorno
> immagazzinato nel puntatore "start" nel corso
> della prima iterazione del ciclo che richiede i
> dati (per n==0); nelle iterazioni successive,
> l'indirizzo dei nodi seguenti viene registrato
> nel campo "next" dell'ultimo nodo inserito
> (puntato da "last" che viene assegnato alla fine
> di ogni iterazione). "p->next" viene
> inizializzato a "NULL" dopo ogni inserimento, in
> modo che l'ultimo nodo inserito non abbia un
> successivo (infatti, il ciclo in "printlista"
> procede mentre "p->next" non e`
> nullo).
>
> Um... spero sia comprensibile, anche perche` devo
> andare a
> cena...
A me sembra di aver capito che in "last->next=p"
in pratica si crea un nuovo nodo,giusto?
e last=p finale crea un altro nuovo nodo,giusto?-
Re: Qualcuno può aiutarmi con le struttuScritto daNon Autenticatoil 2010-05-05 20:32:00.0 alle 2010-05-05 20:32:00.0
- Scritto da:
>
> - Scritto da: alex.tg
> > "Chiaro" e` un concetto soggettivo, fra l'altro
> > so di non essere granche` bravo a spiegare
> > qualcosa.
> >
> > Comunque, definisce una struttura che applica a
> > ogni nodo di una lista concatenata. Ogni nodo ha
> > un puntatore al nodo successivo nella heap del
> > programma. All'inserimento dei dati, ogni
> > elemento viene allocato con malloc, che ritorna
> > un indirizzo sulla heap: il suo valore di
> ritorno
> > immagazzinato nel puntatore "start" nel corso
> > della prima iterazione del ciclo che richiede i
> > dati (per n==0); nelle iterazioni successive,
> > l'indirizzo dei nodi seguenti viene registrato
> > nel campo "next" dell'ultimo nodo inserito
> > (puntato da "last" che viene assegnato alla fine
> > di ogni iterazione). "p->next" viene
> > inizializzato a "NULL" dopo ogni inserimento, in
> > modo che l'ultimo nodo inserito non abbia un
> > successivo (infatti, il ciclo in "printlista"
> > procede mentre "p->next" non e`
> > nullo).
> >
> > Um... spero sia comprensibile, anche perche`
> devo
> > andare a
> > cena...
>
> A me sembra di aver capito che in "last->next=p"
> in pratica si crea un nuovo nodo,giusto?
> e last=p finale crea un altro nuovo nodo,giusto?
Ah no mi sono sbagliato! Grazie Alex.tg,ho capito finalmente come funzionano queste benedette liste! GRAZIEEEEE!-
Re: Qualcuno può aiutarmi con le struttu> Ah no mi sono sbagliato! Grazie Alex.tg,ho capito
> finalmente come funzionano queste benedette
> liste!
> GRAZIEEEEE!
Wow!
L'ho aiutato mentre giocavo a Burraco dopo cena.
Grande!
-
Re: Qualcuno può aiutarmi con le struttuScritto daNon Autenticatoil 2010-05-05 23:28:00.0 alle 2010-05-05 23:28:00.0
- Scritto da: alex.tg
> > Ah no mi sono sbagliato! Grazie Alex.tg,ho
> capito
> > finalmente come funzionano queste benedette
> > liste!
> > GRAZIEEEEE!
>
> Wow!
>
> L'ho aiutato mentre giocavo a Burraco dopo cena.
> Grande!
giocavi con del burro su tua sorella?
-
-
-
-
-
-
-