Buscar en una lista doble
Listas dobles en C++
Mediante programación en C++, haciendo uso de Listas dobles, creamos un menú que permita insertar, buscar y luego mostrar todos los elementos insertados.
El menú contará con 4 opciones, la cual contará con los siguientes atributos.
El programa debe permitir insertar elementos al inicio, buscar elementos y poder salir del programa. Para ingresar a estas opciones, el programa debe pedir que el usuario ingrese el número de opción que desea conocer.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
struct nodo{
int nro;
struct nodo *sgte;
struct nodo *ant;
};
typedef struct nodo *Tlista;
void insertar(Tlista&, int);
bool buscar(Tlista&,int,int&);
void imprimir(Tlista);
void main()
{Tlista lista=NULL;
int valor, opc,pos;
bool R;
do
{
cout<<"1. Insertar al Inicio"<<endl;
cout<<"2. Busqueda"<<endl;
cout<<"3. Ver Lista"<<endl;
cout<<"4. Salir"<<endl;
cout<<"Ingrese Opcion:";
cin>>opc;
char opc0='s';
switch(opc)
{
case 1: while(opc0=='s' || opc0=='S')
{
cout<<"Ingrese valor al inicio:";
cin>>valor;
insertar(lista, valor);
cout<<endl;
cout<<"Seguir ingresando [s/n]: ";cin>>opc0;
}
break;
case 2: cout<<"***Buscar un Valor de la lista***"<<endl;
cout<<"Ingrese valor a buscar:";
cin>>valor;
imprimir(lista);
R= buscar(lista,valor,pos);
if(R==true)
{cout<<"El valor buscado es:"<<valor;
cout<<"Posicion:"<<pos;
getch();
}
else
{cout<<"Valor buscado es:"<<valor;
cout<<"Posicon: Ninguna";
}
break;
case 3: cout<<"Listado"<<endl;
imprimir(lista);
getch();
break;
}
clrscr();
}while(opc!=4);
}
void insertar(Tlista &lista, int valor)
{Tlista nuevo, actual;
nuevo=new(struct nodo);
nuevo->nro=valor;
actual=lista;
if(lista==NULL)
{
lista=nuevo;
lista->ant=NULL;
lista->sgte=NULL;
}
else
{
nuevo->sgte=lista;
nuevo->ant=lista->ant;
lista->ant=nuevo;
lista=nuevo;
}
}
bool buscar(Tlista &lista, int valor, int&pos)
{ Tlista aux=lista;
pos=0;
while(aux!=NULL)
{
if(aux->nro==valor)
{
return true;
}
aux=aux->sgte;
pos++;
}
return false;
}
void imprimir(Tlista lista)
{Tlista aux = lista;
int i = 0;
while (lista != NULL)
{
cout<<"N["<<i<<"] = {"<<lista->nro<<"}, ";
lista = lista->sgte;
i++;
}
if(i==0)
{
cout<<"nLa lista no tiene datos ... Press Enter";
}
}
Como se puede ver en las imágenes, el programa Buscar en una lista doble, tiene un menú de 4 opciones:
Al elegir la primera opción, nos deberá pedir el valor que queremos insertar al inicio de la lista doble.
La segunda opción, deberá pedir al usuario el valor que desea buscar y automáticamente nos mostrará el valor encontrado en su respectiva posición.
La tercera opción deberá mostrar todos los elementos ingresados en la lista doble.
Y finalmente la opción salir, que nos permitirá salir de la aplicación.
Continuando con Listas Dobles, les comparto el siguiente post: Insertar, intercalar, unir y sumar listas dobles