#include <stdio.h>
#include <stdlib.h>
typedef struct estru
{
int numero;
struct estru *prox;
struct estru *ant;
} lista;
lista *r,*p,*q,*ini2,*ini=NULL;
void INSERE (int VALOR){
p = (lista *) malloc(sizeof(lista));
if(ini == NULL) ini = p;
else
{
q->prox = p;
p->ant = q;
ini->ant= p;
}
p->numero = VALOR;
p->prox = ini;
q = p;
}
int main()
{
int i ,divi;
for (i=0;i<10;i++) INSERE(i);
p = ini;
q = p;
while(p->prox != ini)
{
printf("%d ->", p->numero);
p = p->prox;
}
printf("%d -> Voltou ao inicio ", p->numero);
p = ini;
q = p;
printf("\n Digite a posicao para dividir a lista... ");
scanf("%d",&divi);
for (i=0;i<divi;i++)
{
q=p;
p = p->prox;
ini->ant = q;
}
q->prox = ini;
q=ini;
ini2=p;
r=p;
while(q->prox != ini)
{
printf("%d ->", q->numero);
q = q->prox;
}
printf("%d -> Voltou ao inicio ", q->numero);
for(i=divi;i<9;i++)
{
r = r->prox;
ini2->ant = r;
}
r->prox = ini2;
r=ini2;
while(r->prox != ini2){
printf("%d ->", r->numero);
r = r->prox;
}
printf("%d -> Voltou ao inicio ", r->numero);
free(p);
return 0;
}