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
