#include <stdlib.h>
#include <stdio.h>
typedef struct nodo{
int dato;
struct nodo *prox;
}*punt,nd;
punt p,ant,t,prim;
char tc;int dt;
int main(int argc, char *argv[])
{
prim=NULL;
do{
printf("\n\nLista Circular 1.0\n\n");
printf(" 1 - Buscar\n");
printf(" 2 - Insertar\n");
printf(" 3 - Eliminar\n");
printf(" 4 - Listar\n");
printf(" 5 - Terminar\n\n");
printf("Seleccione su Opción: ");
do scanf("%1s",&tc);while(tc<'1'&&tc>'5');
if(tc>='1'&&tc<'4'){
printf("\n\nDato: ");
scanf("%d",&dt);
}
switch(tc){
case '1':
if(!prim)printf("\nError lista vacía\n");
else{
t=prim;
while(t->prox!=prim &&(t->dato!=dt))t=t->prox;
if(t->dato!=dt)printf("No se encuentra dato.\n");
else printf("Valor %d hallado.\n",dt);
}
break;
case '2':
p=new nd;
p->dato=dt;
if(!prim){
p->prox=p;
prim=p;
}else{
p->prox=prim->prox;
prim->prox=p;
}
break;
case '3':
if(!prim)printf("\nError lista vacía\n");
else{
t=prim;
while(t->prox!=prim && t->dato!=dt){ant=t;t=t->prox;}
if(t->dato!=dt)printf("\nNo se encuentra dato.");
else {
if(t->prox==t)prim=NULL;
else
if(t==prim){
p=prim;
while(p->prox!=prim)p=p->prox;
prim=t->prox;
p->prox=prim;
}else ant->prox=t->prox;
delete t;
}
}
break;
case '4':
if(!prim)printf("\nError lista vacía\n");
else{
t=prim;
while(t->prox!=prim){
printf("\nDato: %d",t->dato);
t=t->prox;
}
printf("\nDato: %d",t->dato);
}
break;
}
}while(tc!='5');
t=prim;
while(t){
p=t;
t=t->prox;
delete p;
}
system("PAUSE");
return EXIT_SUCCESS;
}