#include <stdio.h>
#include <stdlib.h> /* Necessrio para a utilizao da funo malloc() */
typedef struct estru
{
int numero;
struct estru *ante;
struct estru *prox;
} lista;
void main()
{
lista *p, *q, *ini;
p = (lista *) malloc(sizeof(lista));
p->ante = p;
p->numero = 1;
p->prox = p;
q = p;
ini = p;
printf("A informacao armazenada e apontada pelo ponteiro e: %d\n", p->numero);
p = (lista *) malloc(sizeof(lista));
p->ante = q;
p->numero = 2;
p->prox = ini;
q->prox = p;
ini->ante = p;
q = p;
printf("A informacao armazenada e apontada pelo ponteiro e: %d\n", p->numero);
p = (lista *) malloc(sizeof(lista));
p->ante = q;
p->numero = 3;
p->prox = ini;
q->prox = p;
ini->ante = p;
q = p;
printf("A informacao armazenada e apontada pelo ponteiro e: %d\n", p->numero);
p = (lista *) malloc(sizeof(lista));
p->ante = q;
p->numero = 4;
p->prox = ini;
q->prox = p;
ini->ante = p;
q = p;
printf("A informacao armazenada e apontada pelo ponteiro e: %d\n", p->numero);
p = (lista *) malloc(sizeof(lista));
p->ante = q;
p->numero = 5;
p->prox = ini;
q->prox = p;
ini->ante = p;
q = p;
printf("A informacao armazenada e apontada pelo ponteiro e: %d\n\n", p->numero);
// Exibir a lista a partir do primeiro n
p = ini;
while(p->prox != ini)
{
printf(" %d ->", p->numero);
p = p->prox;
}
printf(" %d ->fim da lista\n\n", p->numero);
// Exibir a lista a partir do ltimo n
printf(" %d ->", p->numero);
p = p->ante;
while(p != ini)
{
printf(" %d ->", p->numero);
p = p->ante;
}
printf(" %d ->fim da lista\n\n", p->numero);
}