PDA

Visualizza la versione completa : [C]Chiarimenti lista bidirezionale


giumanji
15-02-2012, 17:20
Ciao a tutti ho trovato questa lista bidirezionale in rete x ci sono diverse cose che non capisco le scrivo accanto ai vari passaggi che non ho chiari:


#include <stdio.h>
#include <malloc.h>
struct elemento
{
int informazione;
struct elemento *succ;
struct elemento *prec;
};
struct elemento *inserisci();
void visualizza(struct elemento*);
main()
{
struct elemento *lista;
lista=inserisci();
visualizza(lista);
getchar();
getchar();
}
struct elemento *inserisci()
{
struct elemento *testa,*corpo,*piede;
int i,n;
printf("Inserisci il numero di elementi della lista: ");
scanf("%d",&n);
testa=(struct elemento *)malloc(sizeof(struct elemento)); {Qui alloca lo spazio per la
testa->prec=NULL; prima informazione e dice che
printf("Inserisci il 1%c elemento: ",167); il valore precedente a testa
scanf("%d",&testa->informazione); null}
corpo=testa;
for(i=2;i<=n;i++)
{
corpo->succ=(struct elemento *)malloc(sizeof(struct elemento)); {Alloca lo spazio per gli
(corpo->succ)->prec=corpo; elementi successivi ma
printf("Inserisci il %d%c elemento: ",i,167); non capisco (corpo->succ)->prec=corpo
scanf("%d",&corpo->informazione);
}
corpo->succ=NULL;
return(testa);
}
void visualizza(struct elemento *puntatore)
{
printf("LISTA: ");
while(puntatore->succ!=NULL) {non bastava solo puntatore!=NULL??}
{
printf("--->%d",puntatore->informazione);
puntatore=puntatore->succ;
}
printf("--->%d",puntatore->informazione); {Da qui in poi non capisco perch continua in
printf("--->NULL\n"); questo modo}
printf("LISTA: ");
while(puntatore!=NULL)
{
printf("--->%d",puntatore->informazione);
puntatore=puntatore->prec;
}
printf("--->NULL\n");
}

giumanji
15-02-2012, 19:36
Nessuno mi sa aiutare??

Loading