Documentos de Académico
Documentos de Profesional
Documentos de Cultura
#include <iostream>
#include <cstdlib>
#include <conio.h>
using namespace std;
// Programa Principal
main()
{
int dato;
int opcion;
nodo *primero=NULL; /*lista vacia*/
nodo *resultado = NULL;
/* lectura de nodos */
do
{
system("cls");//cls();
cout<<"\n *************MENU*************";
cout<<"\n1. Insertar Nodo ";
cout<<"\n2. Buscar Nodo ";
cout<<"\n3. Eliminar Nodo ";
cout<<"\n4. Buscar Nodo e Insertar un Valor despues de el ";
cout<<"\n5. Ordenar ";
cout<<"\n6. Imprimir";
cout<<"\nESCOJA UNA OPCION : ";
cin>>opcion;
switch(opcion)
{
case 1:
do {
cout<<"Ingrese el valor <ingrese 0 para salir> ";
cin>>dato;
if (dato != 0)
{
primero=crearnodo(dato,primero);
}
case 4:
/* lectura de elementos para insertar un nuevo nodo */
do {
cout<<"\nIngrese el elemento a buscar <0 para salir> ";
cin>>dato;
if (dato != 0)
{
resultado = buscarLista (primero,dato);
if (resultado == NULL)
{
cout<<"El elemento no existe en la lista ";
}
else
{
cout<<"Ingrese el valor a insertar :";
cin>>dato;
insertarLista (resultado,dato);
}
}
} while (dato != 0);
break;
case 5:
ordenardoblesasc(primero);
imprimirLista(primero);
getch();
break;
case 6:
imprimirLista(primero);
getch();
break;
}
}while (opcion != 7) ;
getch();
}
nodo *nuevo;
nuevo=(nodo*)malloc(sizeof(tipo_nodo));
nuevo->dato=ndato;
nuevo->adelante=cabeza;
nuevo->atras=NULL;
if (cabeza!=NULL)
{
cabeza->atras=nuevo;
}
return nuevo;
}
//INSERCION DE UN NUEVO NODO QUE NO ESTA EN LA CABEZA DE LA LISTA
nuevo->adelante=anterior->adelante;
/*campo atras del siguiente apunta al nodo nuevo creado*/
anterior->adelante=nuevo;
nuevo->atras=anterior;
}
/*bucle de busqueda*/
while((actual !=NULL)&&(!encontrado))
{
encontrado=(actual->dato == ndato);
if(!encontrado)
actual=actual->adelante;
}
/*enlace de nodo anterior con siguiente*/
if(actual!=NULL)
{
/*se distingue entre que el nodo sea el cabecera o del resto de la lista*/
if(actual==*cabeza)
{
*cabeza=actual->adelante;
if(actual->adelante!=NULL)
actual->adelante->atras=NULL;
}
else if(actual->adelante!=NULL) /*no es el ultimo nodo*/
{
actual->atras->adelante=actual->adelante;
actual->adelante->atras=actual->atras;
}
else /*ultimo nodo*/
{
actual->atras->adelante=NULL;
}
free(actual);
}
}
void imprimirLista (nodo *inicio)
{
cout<<"\nLISTA DE ELEMENTOS DE INICIO A FIN" ;
while (inicio!=NULL)
{
cout<<"\n "<< inicio->dato;
inicio= inicio->adelante;
}
}
void imprimirListaReves (nodo *inicio)
{
nodo * fin;
while (inicio!=NULL)
{
fin = inicio;
inicio= inicio->adelante;
}