#include <stdio.h>
#include <stdlib.h>
struct ElemListaDoppia{
int info;
struct ElemListaDoppia *next;
struct ElemListaDoppia *prev;
};
typedef struct ElemListaDoppia TipoNodoListaDoppia;
struct RecordListaDoppia{
TipoNodoListaDoppia *first;
TipoNodoListaDoppia *last;
};
typedef struct RecordListaDoppia TipoListaDoppia;
void addTestaLista(TipoListaDoppia *lis, int e);
int main()
{
TipoListaDoppia lista;
int i;
for(i = 0; i < 5; i++)
addTestaLista(&lista, i);
//Puntatore per stampare
TipoNodoListaDoppia *p = lista.first;
printf("%d -> ", p -> info);
p = p -> next;
printf("%d -> ", p -> info);
//In questo modo mi stampa 4 -> 3 ->, il che è giusto.
//Vorrei, però, utilizzare un ciclo per la stampa.
//Io ho provato così
// while(p -> next != NULL)
//{
// printf("%d -> ", p -> info);
// p = p -> next;
//}
//Ma non va. Qual è la condizione giusta da inserire?
}
void addTestaLista(TipoListaDoppia *lis, int e)
{
TipoNodoListaDoppia *aux = (TipoNodoListaDoppia*) malloc (sizeof(TipoNodoListaDoppia));
aux -> info = e;
if(lis == NULL)
{
aux -> prev = NULL;
aux -> next = NULL;
lis -> first = aux;
lis -> last = aux;
return;
}
aux -> prev = NULL;
aux -> next = lis -> first;
lis -> first -> prev = aux;
lis -> first = aux;
}
Io sto compilando ed eseguendo questo. Che poi, tra l'altro, è preso tale e quale dalle dispensa del prof.
//Puntatore per stampare
TipoNodoListaDoppia *p = lista.first;
printf("%d -> ", p -> info);
p = p -> next;
printf("%d -> ", p -> info);
//In questo modo mi stampa 4 -> 3 ->, il che è giusto.
//Vorrei, però, utilizzare un ciclo per la stampa.
//Io ho provato così, ma non funziona!
// while(p -> next != NULL)
//{
// printf("%d -> ", p -> info);
// p = p -> next;
//}
Aldilà di tutto ciò, tralasciando il fatto che si siano errori (mi arrangerò in seguito), come si stampa questa benedetta lista?