Listas dobles

Hacer un programa que permita insertar e intercalar listas doblemente enlazadas. El programa debe tener un menú de tres opciones: Insertar, Intercalar y salir

#include <iostream.h>
#include <conio.h>
struct nodo
{
 int nro;
 struct nodo* sgte;
 struct nodo* ante;
};
typedef struct nodo* Tlista;
void incertar(Tlista &,int);
void intercala(Tlista &,Tlista &,Tlista &);

void listado(Tlista);

void main(void)
{
 Tlista lista1,lista2,lista3,lista4,lista5;
 lista1=lista2=lista3=lista4=lista5=NULL;
 int opc,n,i,k;
 do
   {clrscr();
    cout<<"[1]->INSERTAR NUMEROS\n";
    cout<<"[2]->INTERCALAR\n";
    cout<<"[0]->SALIR\n";
    cout<<"INGRESE OPCION:";
    cin>>opc;
    switch(opc)
          {
           case 1:
                  clrscr();
                  cout<<"INGRESE LIMITE DE LAS LISTAS";
                  cin>>n;
                  cout<<"\nLISTA NUMERO 1";
                  for(i=0;i<n;i++)
                     {
                      cout<<"\nINCERTE VALOR ["<<(i+1)<<"]";
                      cin>>k;
                      incertar(lista1,k);
                     }
                  cout<<"\nLISTA NUMERO 2";
                  for(i=0;i<n;i++)
                     {
                      cout<<"\nINCERTE VALOR ["<<(i+1)<<"]";
                      cin>>k;
                      incertar(lista2,k);
                     }
                  break;
           case 2:
                  clrscr();
                  cout<<"LAS LISTAS FUERON INTERCALADAS";
                  intercala(lista1,lista2,lista3);
                  cout<<"\nLISTA 1";
                  listado(lista1);
                  cout<<"\nLISTA 2";
                  listado(lista2);
                  cout<<"\nLISTA UNIDA";
                  listado(lista3);
                  getch();
                  break;

         }
   }while(opc!=0);
}
void incertar(Tlista &lista,int n)
{
 Tlista nu;
 nu=new(struct nodo);
 nu->nro=n;
 if(lista==NULL)
   {
    lista=nu;
    lista->sgte=NULL;
    lista->ante=NULL;
   }
 else
   {
    nu->sgte=lista;
    nu->ante=lista->ante;
    lista->ante=nu;
    lista=nu;
   }
}
void intercala(Tlista &lista1,Tlista &lista2,Tlista &lista3)
{
 int x;
 Tlista l1,l2;
 l1=lista1;
 l2=lista2;
 while(l1!=NULL && l2!=NULL)
      {if(l1!=NULL)
         {
          x=l1->nro;
          incertar(lista3,x);
         }
       if(l2!=NULL)
         {
          x=l2->nro;
          incertar(lista3,x);
         }
       l1=l1->sgte;
       l2=l2->sgte;
      }
}

void listado(Tlista lista)
{
 Tlista p;
 p=lista;
 while(p!=NULL)
      {cout<<"\n";
       cout<<p->nro;
       p=p->sgte;
      }
}
Intercalar listas dobles
Intercalar listas dobles
Intercalar listas dobles

Como se puede ver en las imágenes, el programa Intercalar listas dobles, tiene un menú de 3 opciones:

  • Al elegir la primera opción, nos saldrá una ventana que nos pedirá ingresar el límite que tendrán las dos listas dobles (Lista número 1 y Lista número 2).
  • La segunda opción, deberá mostrarnos los elementos insertados en la lista número 1, los elementos de la lista número 2 y mostrar la lista intercalada con todos los elementos de ambas listas dobles.
  • Y finalmente la opción salir, que nos permitirá salir de la aplicación.

Espero te haya gustado este post, no dudes en compartirlo!!

  Continuando con Listas Dobles, les comparto el siguiente post: Multiplica pares, divide impares