Ti allego il codice che implementa una lista, la crea, inserisce delle celle e scorre i valori inseriti. Da questo codice dovresti riuscire a risolvere il tuo esercizio. Se hai problemi fammi sapere
#include <stdio.h>
#include <stdlib.h>
struct cella{
int valore;
struct cella * successivo;
struct cella * precedente;
};
typedef struct cella * lista, * posizione;
void creaLista(posizione * p, lista * l){
*l = (struct cella *) malloc(sizeof(struct cella));
(*l)->successivo = *l;
(*l)->precedente = *l;
*p = *l;
}
int listaVuota(lista l){
if (l->successivo == l->precedente)
return 1;
else
return 0;
}
int fineLista(posizione p, lista l){
if (p->successivo == l)
return 1;
else
return 0;
}
posizione primoLista(lista l){
return (l->successivo);
}
posizione succLista(posizione p, lista l){
return (p->successivo);
}
posizione precLista(posizione p, lista l){
return (p->precedente);
}
int leggiCella(posizione p, lista l){
return p->valore;
}
void insCella(posizione * p, int valore, lista l){
struct cella * temp = (struct cella *) malloc(sizeof(struct cella));
temp->valore = valore;
temp->precedente = (*p)->precedente;
temp->successivo = *p;
temp->precedente->successivo = temp;
(*p)->precedente = temp;
*p = temp;
}
int main(){
int i, n;
lista l;
posizione p;
creaLista(&p, &l);
for (i = 0; i < 10; i++){
insCella(&p, i, l);
}
p = primoLista(l);
while (fineLista(p, l) == 0){
n = leggiCella(p, l);
printf("%d\n", n);
p = succLista(p, l);
}
n = leggiCella(p, l);
printf("%d\n", n);
}