#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, *prim;
p = (lista *) malloc(sizeof(lista));
p->ante = NULL;
p->numero = 1;
p->prox = NULL;
q = p;
prim = 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 = NULL;
q->prox = 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 = NULL;
q->prox = 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 = NULL;
q->prox = 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 = NULL;
q->prox = 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 = prim;
while(p->prox != NULL)
{
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->ante != NULL)
{
printf(" %d ->", p->numero);
p = p->ante;
}
printf(" %d ->fim da lista\n\n", p->numero);
}