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";
   }
}
Buscar en una lista doble
Buscar en una lista doble
Buscar en una lista doble

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