Beruflich Dokumente
Kultur Dokumente
La lista enlazada bsica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al
siguiente nodo en la lista, o al valor NULL o a la lista vaca, si es el ltimo nodo.
//DECLARACIN DE PROTOTIPOS
#include<alloc.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
//Declaramosla estructura
typedef struct nodo
{
int dato;
struct nodo * siguiente;
}tipoNodo;
//reservamos el espacio de memoria
tipoNodo *nuevo_elemento();
void insertar_ordenado();
void insertar_final();
void presentar();
void modificar();
void buscar();
void ordenar();
void ordenar_ascendente();
void ordenar_descendente();
void eliminar();
void eliminar_cabeza();
//NUESTRA CABEZA
tipoNodo *cab;
tipoNodo *nuevo_elemento()
{
tipoNodo *nodo1;
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));
if(!nodo1)
cout<<No se ha reservado memoria para el nuevo ;
return nodo1;
}
void main()
{
clrscr();
crear();
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,35,56,);
gotoxy(13,3);cout<<->[ LISTAS ENLAZADAS ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
switch(opc)
{
case1:
clrscr();
insertar();getch();break;
case2:
clrscr();
modificar();getch();break;
case3:
clrscr();
buscar();getch();break;
case4:
clrscr();
ordenar();getch();break;
case5:
clrscr();
eliminar();getch();break;
case6:
clrscr();
presentar();getch();break;
}while(opc!=7);
getch();
}
//CREANDO LA CABEZA
void crear()
{
clrscr();
cab=nuevo_elemento();
gotoxy(20,20);
cout<<Ingrese valor de cabeza :\t;
cin>>cab->dato;
cab->siguiente=NULL;
getch();
}
//MENU DE INSERTAR
void insertar()
{
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,35,56,);
gotoxy(13,3);cout<<->[ LISTAS ENLAZADAS ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
switch(opc)
{
case1:
clrscr();
insertar_inicio();getch();break;
case2:
clrscr();
insertar_final();getch();break;
case3:
clrscr();
insertar_ordenado();getch();break;
}while(opc!=4);
getch();
//INSERATAR AL INICIO
void insertar_inicio()
{
clrscr();
nodo *pAuxElem;
nodo *recorre;
pAuxElem=(tipoNodo*) malloc(sizeof(tipoNodo));
while(recorre->siguiente!=NULL)
{
recorre=recorre->siguiente;
}
int n;
gotoxy(20,20);
cout<<INGRESE VALOR :\t;
cin>>n;
pAuxElem->dato=n;
pAuxElem->siguiente=cab;
cab=pAuxElem;
}
//INSERTAR AL FINAL
void insertar_final()
{
clrscr();
nodo *elem;
elem=nuevo_elemento();
clrscr();
gotoxy(20,20);
cout<<INGRESE VALOR :\t;
cin>>elem->dato;
nodo *recorrer;
recorrer=cab;
while(recorrer->siguiente!=NULL)
recorrer=recorrer->siguiente;
recorrer->siguiente=elem;
elem->siguiente=NULL;
getch();
}
//INSERATAR ORDENADO
void insertar_ordenado()
{
clrscr();
nodo *pAuxElem;
nodo *post;
nodo *recorre;
pAuxElem=(tipoNodo*) malloc(sizeof(tipoNodo));
post=(tipoNodo*) malloc(sizeof(tipoNodo));
int n;
gotoxy(20,20);
cout<<INGRESE VALOR :\t;
cin>>n;
if(n<cab->dato)
{
post=cab->siguiente;
while((pAuxElem->dato>post->dato)&&(post->siguiente!=NULL))
{
post=post->siguiente;
}
if(post->siguiente!=NULL)
{
pAuxElem->siguiente=cab;
cab=pAuxElem;
}
else
{
pAuxElem->siguiente=NULL;
post->siguiente=pAuxElem;
}
}
else
{
while(recorre->siguiente!=NULL)
{
recorre=recorre->siguiente;
}
pAuxElem->dato=n;
pAuxElem->siguiente=cab;
cab=pAuxElem;
}
/*cout<<Ingrese un numero;
cin>>n;
if(n>cab->dato)
{
insertar_inicio(n);
}
else
{
nodo *aux;
nodo *ant;
aux=cab->siguiente;
while((aux!=NULL)(n>aux->dato))
{
ant=aux;
aux=aux->siguiente
}
nodo *nuevo;
nuevo=crear_nuevo();
nuevo->dato=n;
ant->siguiente=nuevo;
nuevo->siguiente=aux;
}*/
}
//PARA MODIFICAR
void modificar()
{
clrscr();
nodo *elem;
nodo *ele;
gotoxy(10,25);cout<<\n;
gotoxy(10,26);cout<<
\n;
\n;
gotoxy(10,29);cout<<\n;
gotoxy(20,20);
cout<<INGRESE EL VALOR A MODIFICAR :\t;
cin>>elem->dato;
nodo *recorrer;
recorrer=cab;
while(recorrer!=NULL)
{
if(recorrer->dato==elem->dato)
{
clrscr();
gotoxy(20,20);
cout<<INGRESE VALOR :\t;
cin>>ele->dato;
recorrer->dato=ele->dato;
}
recorrer=recorrer->siguiente;
}
getch();
}
//PARA BUSCAR
void buscar()
{
clrscr();
nodo *elem;
gotoxy(10,25);cout<<\n;
gotoxy(10,26);cout<<
\n;
\n;
gotoxy(10,29);cout<<\n;
gotoxy(20,20);
cout<<INGRESE EL VALOR A BUSCAR :\t;
cin>>elem->dato;
nodo *recorrer;
recorrer=cab;
while(recorrer!=NULL)
{
if(recorrer->dato==elem->dato)
{
clrscr();
gotoxy(20,20);
cout<<elem->dato<<:\t;
cout<<ESTE ELEMENTO SI EXISTE;
recorrer->dato=elem->dato;
}
recorrer=recorrer->siguiente;
getch();
}
//ORDENAR
void ordenar()
{
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,25,56,);
gotoxy(13,3);cout<<->[ ORDENAR LAS LISTAS ENLAZADAS ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
clrscr();
ordenar_ascendente();getch();break;
case2:
clrscr();
ordenar_descendente();getch();break;
}
while(opc!=3);
getch();
void ordenar_ascendente()
{
nodo* aux;
nodo* temp;
int vaux;
aux=(tipoNodo *)malloc(sizeof(tipoNodo));
temp=(tipoNodo *)malloc(sizeof(tipoNodo));
aux=cab;
while (aux!=NULL)
{
temp=aux;
while(temp->siguiente!=NULL)
{
temp=temp->siguiente;
if(aux->dato>temp->dato)
{
vaux=aux->dato;
aux->dato=temp->dato;
temp->dato=vaux;
}
}
aux=aux->siguiente;
}
}
void ordenar_descendente()
{
nodo* aux;
nodo* temp;
int vaux;
aux=(tipoNodo *)malloc(sizeof(tipoNodo));
temp=(tipoNodo *)malloc(sizeof(tipoNodo));
aux=cab;
while (aux!=NULL)
{
temp=aux;
while(temp->siguiente!=NULL)
{
temp=temp->siguiente;
if(aux->dato<temp->dato)
{
vaux=aux->dato;
aux->dato=temp->dato;
temp->dato=vaux;
}
}
aux=aux->siguiente;
}
}
//ELIMINAR
void eliminar()
{
presentar();
nodo *eliminar;
//
nodo *recorrer;
nodo *asigna;
gotoxy(10,25);cout<<\n;
gotoxy(10,26);cout<<
\n;
\n;
gotoxy(10,29);cout<<\n;
gotoxy(10,31);cout<<Ingrese el nmero a eliminar\t;
cin>>eliminar->dato;
//
recorrer=cab;
if (eliminar->dato==cab->dato)
{
eliminar_cabeza();
}
else
{
nodo *anterior=cab;
nodo * aux=cab->siguiente;
while((aux!=NULL)&&(aux->dato!=eliminar->dato))
{
anterior=aux;
aux=aux->siguiente;
}
if(aux!=NULL)
{
anterior->siguiente=aux->siguiente;
aux->siguiente=NULL;
free(aux);
}
else
{
gotoxy(10,33);
cout<<NO SE ENCUENTRA;
}
}
}
//ELIMINAR CABEZA
void eliminar_cabeza()
{
nodo *aux;
aux=cab;
cab=cab->siguiente;
aux->siguiente=NULL;
free(aux);
}
//PRESENTAR LA LISTA
void presentar()
{
clrscr();
int f=10;
nodo *recorrer;
recorrer=cab;
gotoxy(20,f);
while(recorrer!=NULL)
{
gotoxy(20,f);
cout<<recorrer->dato;
cout<<\n\n;
recorrer=recorrer->siguiente;
f=f+2;
}
getch();
}
//ESTA FUNCION PERMITE PRESENTAR LOS BORDES DE UN CUADRO
void cuadro(int x1,int y1, int x2, int y2, char simb)
{
for (int i1=y1;i1<=y2;i1++)
{
gotoxy(i1,x1);cout<<simb;
gotoxy(i1,x2);cout<<simb;
}
for (int i2=x1;i2<=x2;i2++)
{
gotoxy(y1,i2);cout<<simb;
gotoxy(y2,i2);cout<<simb;
}
}
Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL o a la lista vaca si es el
primer nodo; y otro que apunta al siguiente nodo siguiente, o apunta al valor NULL o a la lista vaca si es
el ltimo nodo.
//DECLARACIN DE PROTOTIPOS
#include<alloc.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
}tipoNodo;
//PROTOTIPOS
tipoNodo *nuevo_elemento();
void creardoble();
void presentar();
void insertar();
void insertarfinaldoble();
void insertarordenadodoble();
void insertariniciodoble();
void modificar();
void buscar();
void ordenar();
void ordenardoblesasc();
void ordenardoblesdesc();
void eliminar();
void eliminar_cabeza();
void cuadro(int x1,int y1,int x2,int y2,char c);
tipoNodo *cab;
tipoNodo *cola;
tipoNodo *nuevo_elemento()
{
tipoNodo *nodo1;
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));
if(!nodo1)
//MENU PRINCIPAL
void main()
{
clrscr();
creardoble();
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,35,56,);
gotoxy(13,3);cout<<->[ LISTAS ENLAZADAS DOBLES ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
switch(opc)
{
case1:
clrscr();
insertar();;getch();break;
case2:
clrscr();
modificar();getch();break;
case3:
clrscr();
buscar();getch();break;
case4:
clrscr();
ordenar();getch();break;
case5:
clrscr();
eliminar();getch();break;
case6:
clrscr();
presentar();getch();break;
}while(opc!=7);
getch();
//CREAR LA CABEZA
void creardoble()
{
clrscr();
int dat;
gotoxy(20,20);
cout<<Ingrese Elemento: ;
cin>>dat;
cab=nuevo_elemento();
cola=nuevo_elemento();
cab->dato=dat;
cab->sig=NULL;
cab->ant=NULL;
cola=cab;
getch();
}
void insertar()
{
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,25,56,);
gotoxy(13,3);cout<<->[ INSERTAR ELEMENMTOS A LA LISTA ENLAZADA ]<-\n;
gotoxy(12,6); cout<< [1]: INSERTAR ORDENADO\n;
gotoxy(12,9);cout<< [2]: INSERTAR CABEZA\n;
gotoxy(12,12);cout<< [3]: INSERTAR AL FINAL\n;
gotoxy(12,15);cout<< [4]: REGRESAR\n;
gotoxy(12,17);cout<< Elegir una Opcin [ ];
gotoxy(32,17);cin>>opc;
switch(opc)
{
case1:
clrscr();
insertarordenadodoble();getch();break;
case2:
clrscr();
insertariniciodoble();getch();break;
case3:
clrscr();
insertarfinaldoble();getch();break;
}
}
while(opc!=4);
getch();
void insertarfinaldoble()
{
clrscr();
nododoble *elem;
elem=nuevo_elemento();
clrscr();
gotoxy(20,20);
cout<<\t\t<<INGRESE VALOR :\t;
cin>>elem->dato;
cola->sig=elem;
elem->sig=NULL;
elem->ant=cola;
cola=elem;
getch();
}
void insertarordenadodoble()
{
int dat;
nododoble *aux;
nododoble *ant;
nododoble *post;
aux=nuevo_elemento();
ant=nuevo_elemento();
post=nuevo_elemento();
gotoxy(18,22);
cout<<Ingrese un elemento: ;
cin>>dat;
aux->dato=dat;
if(aux->dato>cab->dato)
{
ant=cab;
post=cab->sig;
if (aux->dato<post->dato){
aux->sig=post;
post->ant=aux;
ant->sig=aux;
aux->ant=ant;
}else{
aux->sig=NULL;
post->sig=aux;
aux->ant=post;
}
}
else
{
aux->sig=post;
post->ant=aux;
ant->sig=aux;
aux->ant=ant;
}
}
else{
aux->dato=dat;
aux->sig=cab;
cab->ant=aux;
aux->ant=NULL;
cab=aux;
}
}
void insertariniciodoble()
{
nododoble *Aux;
int dat;
Aux=nuevo_elemento();
gotoxy(18,22);
cout<<Ingrese un numero:;
cin>>dat;
Aux->dato=dat;
Aux->ant=NULL;
Aux->sig=cab;
cab->ant=Aux;
cab=Aux;
}
void modificar()
{
clrscr();
nododoble *modificar;
nododoble *ele;
modificar=nuevo_elemento();
int db,encontrado=0;
modificar=cab;
gotoxy(10,20);
cout<<\t<<INGRESE EL VALOR A MODIFICAR :\t;
cin>> db;
while(modificar!=NULL)
{
if(db==modificar->dato)
{
gotoxy(10,22);cout<<Elemento existente en la lista;
encontrado=1;
gotoxy(10,25);
cout<<\t\t<<INGRESE VALOR :\t;
cin>>ele->dato;
modificar->dato=ele->dato;
}
modificar=modificar->sig;
}
if(encontrado==0)
{
gotoxy(10,22);cout<<Elemento no existente en la lista;
}
getch();
}
void buscar()
{
clrscr();
nododoble *buscar;
buscar=nuevo_elemento();
int db,encontrado=0;
buscar=cab;
gotoxy(18,15);
cout<<Ingrese el numero a buscar: ;
cin>> db;
while(buscar!=NULL)
{
if(db==buscar->dato)
{
gotoxy(18,18);cout<<Elemento existente en la lista;
encontrado=1;
}
buscar=buscar->sig;
}
if(encontrado==0)
{
gotoxy(18,18);cout<<Elemento no existente en la lista;
}
getch();
}
void ordenar()
{
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,25,56,);
gotoxy(13,3);cout<<->[ ORDENAR LAS LISTAS ENLAZADAS ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
}
while(opc!=3);
getch();
}
void ordenardoblesasc()
{
nododoble *aux;
nododoble *temp;
int vaux;
aux=nuevo_elemento();
temp=nuevo_elemento();
aux=cab;
while (aux!=NULL)
{
temp=aux;
while(temp->sig!=NULL)
{
temp=temp->sig;
if(aux->dato>temp->dato)
{
vaux=aux->dato;
aux->dato=temp->dato;
temp->dato=vaux;
}
}
aux=aux->sig;
}
}
void ordenardoblesdesc()
{
nododoble *aux;
nododoble *temp;
int vaux;
aux=nuevo_elemento();
temp=nuevo_elemento();
aux=cab;
while (aux!=NULL)
{
temp=aux;
while(temp->sig!=NULL)
{
temp=temp->sig;
if(aux->dato<temp->dato)
{
vaux=aux->dato;
aux->dato=temp->dato;
temp->dato=vaux;
}
}
aux=aux->sig;
}
}
void presentar()
{
clrscr();
int c=8;
nododoble *recorre;
recorre=nuevo_elemento();
recorre=cab;
gotoxy(18,7);
cout<< ELEMENTOS INSERTADOS: \n;
while(recorre!=NULL)
{
c=c+1;
gotoxy(30,c);cout<<recorre->dato<<\n;
recorre=recorre->sig;
}
getch();
}
void eliminar()
{
presentar();
nododoble *eliminar;
nododoble *asigna;
gotoxy(10,25);cout<<\n;
gotoxy(10,26);cout<<
\n;
\n;
gotoxy(10,29);cout<<\n;
gotoxy(10,31);cout<<Ingrese el nmero a eliminar\t;
cin>>eliminar->dato;
if (eliminar->dato==cab->dato)
{
eliminar_cabeza();
}
else
{
nododoble *anterior=cab;
nododoble * aux=cab->sig;
while((aux!=NULL)&&(aux->dato!=eliminar->dato))
{
anterior=aux;
aux=aux->sig;
}
if(aux!=NULL)
{
asigna=aux->sig;
anterior->sig=asigna;
aux->ant=anterior;
aux->ant=NULL;
aux->sig=NULL;
free(aux);
}
else
{
gotoxy(10,33);
cout<<NO SE ENCUENTRA;
}
}
void eliminar_cabeza()
{
nododoble *aux;
aux=cab;
cab=cab->sig;
aux->sig=NULL;
aux->ant=NULL;
free(aux);
}
void cuadro(int x1,int y1, int x2, int y2, char simb)
{
for (int i1=y1;i1<=y2;i1++)
{
gotoxy(i1,x1);cout<<simb;
gotoxy(i1,x2);cout<<simb;
}
for (int i2=x1;i2<=x2;i2++)
{
gotoxy(y1,i2);cout<<simb;
gotoxy(y2,i2);cout<<simb;
}
}
}tipoNodo;
//PROTOTIPOS
tipoNodo *nuevo_elemento();
void crearc();
void presentar();
void presentar_recorrido();
void insertar();
void insertarfinalc();
void insertarordenadoc();
void insertarinicioc();
void modificar();
void buscar();
void ordenar();
void ordenarc();
void ordenarcdesc();
void eliminar();
void eliminar_cabeza();
void cuadro(int x1,int y1,int x2,int y2,char c);
tipoNodo *cab;
tipoNodo *cola;
tipoNodo *nuevo_elemento()
{
tipoNodo *nodo1;
nodo1=(tipoNodo *)malloc(sizeof(tipoNodo ));
if(!nodo1)
cout<<No se ha reservado memoria para el nuevo ;
return nodo1;
}
//MENU PRINCIPAL
void main()
{
clrscr();
creardoble();
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,35,56,);
gotoxy(13,3);cout<<->[ LISTAS ENLAZADAS CIRCULARES ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
switch(opc)
{
case1:
clrscr();
insertar();;getch();break;
case2:
clrscr();
modificar();getch();break;
case3:
clrscr();
buscar();getch();break;
case4:
clrscr();
ordenar();getch();break;
case5:
clrscr();
eliminar();getch();break;
case6:
clrscr();
presentar();getch();break;
case7:
clrscr();
presentar_recorrido();getch();break;
}
}while(opc!=8);
getch();
//CREAR LA CABEZA
void crearc()
{
clrscr();
int dat;
gotoxy(20,20);
cout<<Ingrese Elemento: ;
cin>>dat;
cab=nuevo_elemento();
cab->dato=dat;
cola=cab;
cola->sig=cab;
cab->ant=cola;
getch();
}
void insertar()
{
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,25,56,);
gotoxy(13,3);cout<<->[ INSERTAR ELEMENMTOS A LA LISTA ENLAZADA ]<-\n;
gotoxy(12,6); cout<< [1]: INSERTAR ORDENADO\n;
gotoxy(12,9);cout<< [2]: INSERTAR CABEZA\n;
gotoxy(12,12);cout<< [3]: INSERTAR AL FINAL\n;
gotoxy(12,15);cout<< [4]: REGRESAR\n;
gotoxy(12,17);cout<< Elegir una Opcin [ ];
gotoxy(32,17);cin>>opc;
switch(opc)
{
case1:
clrscr();
insertarordenadoc();getch();break;
case2:
clrscr();
insertarinicioc();getch();break;
case3:
clrscr();
insertarfinalc();getch();break;
}
}
while(opc!=4);
getch();
void insertarfinalc()
{
clrscr();
nodoc *elem;
elem=nuevo_elemento();
clrscr();
gotoxy(20,20);
cout<<\t\t<<INGRESE VALOR :\t;
cin>>elem->dato;
cola->sig=elem;
elem->ant=cola;
elem->sig=cab;
cab->ant=elem;
cola=elem;
getch();
void insertarordenadoc()
{
nodoc *ant;
nodoc *Aux;
nodoc *post;
int dat;
Aux=nuevo_elemento();
ant=nuevo_elemento();
post=nuevo_elemento();
gotoxy(18,22);
cout<<Ingrese un elemento: ;
cin>>dat;
Aux->dato=dat;
if(Aux->dato>cab->dato)
{
ant=cab;
post=cab->sig;
while((Aux->dato>post->dato)&&(post->sig!=cab))
{
ant=post;
post=post->sig;
}
if(post->sig==cab)
{
if (Aux->dato<post->dato)
{
Aux->sig=post;
post->ant=Aux;
ant->sig=Aux;
Aux->ant=ant;
}
else
{
Aux->sig=cab;
post->sig=Aux;
Aux->ant=post;
cab->ant=Aux;
cola=Aux;
}
}
else
{
Aux->sig=post;
post->ant=Aux;
ant->sig=Aux;
Aux->ant=ant;
}
}
else
{
Aux->dato=dat;
Aux->sig=cab;
cab->ant=Aux;
Aux->ant=cola;
cab=Aux;
cola->sig=cab;
}
}
void insertarinicioc()
{
nodoc *Aux;
int dat;
Aux=nuevo_elemento();
gotoxy(18,22);
cout<<Ingrese un numero:;
cin>>dat;
Aux->dato=dat;
Aux->sig=cab;
cab->ant=Aux;
cola->sig=Aux;
Aux->ant=cola;
cab=Aux;
getch();
}
void modificar()
{
clrscr();
nodoc *modificar;
nodoc *ele;
modificar=nuevo_elemento();
int db,encontrado=0;
modificar=cab;
gotoxy(10,20);
while(db!=modificar->dato)
{
modificar=modificar->sig;
}
gotoxy(10,22);
cout<<Elemento existente en la lista;
encontrado=1;
gotoxy(10,25);
cout<<\t\t<<INGRESE VALOR :\t;
cin>>ele->dato;
modificar->dato=ele->dato;
c++;
}
if(encontrado==0)
{
gotoxy(10,22);
cout<<Elemento no existente en la lista;
}
getch();
}
void buscar()
{
clrscr();
cuadro(15,5,50,25,);
nodoc *buscar;
buscar=nuevo_elemento();
int db,encontrado=0;
buscar=cab;
gotoxy(18,15);
cout<<Ingrese el numero a buscar: ;
cin>> db;
for(int c=0;c<=1;c++)
{
while(buscar->dato!=db)
{
buscar=buscar->sig;
}
gotoxy(18,18);
cout<<Elemento existente en la lista;
encontrado=1;
c++;
}
if(encontrado==0)
{
gotoxy(18,18);cout<<Elemento no existente en la lista;
}
getch();
}
void ordenar()
{
clrscr();
char opc= ;
do
{
clrscr();
cuadro(1,10,25,56,);
gotoxy(13,3);cout<<->[ ORDENAR LAS LISTAS ENLAZADAS ]<-\n;
gotoxy(12,6);cout<<
MENU PRINCIPAL\n;
}
while(opc!=3);
getch();
}
void ordenarc()
{
nodoc *aux;
nodoc *temp;
int vaux;
aux=nuevo_elemento();
temp=nuevo_elemento();
aux=cab;
while (aux->sig!=cab)
{
temp=aux;
while(temp->sig!=cab)
{
temp=temp->sig;
if(aux->dato>temp->dato)
{
vaux=aux->dato;
aux->dato=temp->dato;
temp->dato=vaux;
}
}
aux=aux->sig;
}
}
void ordenarcdesc()
{
nodoc *aux;
nodoc *temp;
int vaux;
aux=nuevo_elemento();
temp=nuevo_elemento();
aux=cab;
while (aux->sig!=cab)
{
temp=aux;
while(temp->sig!=cab)
{
temp=temp->sig;
if(aux->dato<temp->dato)
{
vaux=aux->dato;
aux->dato=temp->dato;
temp->dato=vaux;
}
}
aux=aux->sig;
}
}
void presentar()
{
clrscr();
nodoc * recorre;
recorre=nuevo_elemento();
recorre=cab;
cout<<Elementos insertados:\n\n;
for(int c=0;c<=1;c++)
{
cout<<recorre->dato<<\t;
recorre=recorre->sig;
while(recorre!=cab)
{
cout<<recorre->dato<<\t;
recorre=recorre->sig;
}
c++;
}
getch();
}
void presentar_recorrido()
{
clrscr();
nodoc * recorre;
recorre=nuevo_elemento();
recorre=cab;
cout<<Elementos insertados:\n\n;
for(int c=0;c<=1;c++)
{
cout<<recorre->dato<<\t;
recorre=recorre->sig;
while(recorre!=cab)
{
cout<<recorre->dato<<\t;
recorre=recorre->sig;
}
cout<<\n;
}
getch();
void eliminar()
{
presentar();
nodoc *eliminar;
nodoc *asigna;
gotoxy(10,25);cout<<\n;
gotoxy(10,26);cout<<
\n;
\n;
gotoxy(10,29);cout<<\n;
gotoxy(10,31);cout<<Ingrese el nmero a eliminar\t;
cin>>eliminar->dato;
if (eliminar->dato==cab->dato)
{
eliminar_cabeza();
}
else
{
nodoc *anterior=cab;
nodoc * aux=cab->sig;
while((aux!=NULL)&&(aux->dato!=eliminar->dato))
{
anterior=aux;
aux=aux->sig;
}
if(aux!=NULL)
{
asigna=aux->sig;
anterior->sig=asigna;
aux->ant=anterior;
aux->ant=NULL;
aux->sig=NULL;
free(aux);
}
else
{
gotoxy(10,33);
cout<<NO SE ENCUENTRA;
}
}
void eliminar_cabeza()
{
/*
nododoble *aux;
aux=cab;
cab=cab->sig;
//
cab->ant=cola;
aux->sig=NULL;
cab->ant=cola;
aux->ant=NULL;
free(aux); */
nodoc *aux;
aux=cab;
cab=cab->sig;
//
aux->sig=NULL;
aux->ant=NULL;
free(aux);
void cuadro(int x1,int y1, int x2, int y2, char simb)
{
for (int i1=y1;i1<=y2;i1++)
{
gotoxy(i1,x1);cout<<simb;
gotoxy(i1,x2);cout<<simb;
}
for (int i2=x1;i2<=x2;i2++)
{
gotoxy(y1,i2);cout<<simb;
gotoxy(y2,i2);cout<<simb;
}
}