Unir listas dobles en C++

  Listas Dobles

Mediante programación en C++, realizar un programa que permita insertar y unir dos listas doblemente enlazadas. El programa debe tener un menú de tres opciones: Insertar, unir 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 unir(Tlista &,Tlista &,Tlista &);
void listado(Tlista);
void sumar(Tlista &,Tlista &, 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]->UNIR\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<<"LA LISTAS FUERON UNIDAS";
                  unir(lista1,lista2,lista4);
                  cout<<"\nLISTA 1";
                  listado(lista1);
                  cout<<"\nLISTA 2";
                  listado(lista2);
                  cout<<"\nLISTA UNIDA";
                  listado(lista4);
                  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 unir(Tlista &lista1,Tlista &lista2,Tlista &lista4)
{
 int x;
 Tlista l1,l2;
 l1=lista1;
 l2=lista2;
 while(l1!=NULL)
      {
       x=l1->nro;
       incertar(lista4,x);
       l1=l1->sgte;
      }
 while(l2!=NULL)
      {
       x=l2->nro;
       incertar(lista4,x);
       l2=l2->sgte;
      }
}
void listado(Tlista lista)
{
 Tlista p;
 p=lista;
 while(p!=NULL)
      {cout<<"\n";
       cout<<p->nro;
       p=p->sgte;
      }
}
unir listas dobles
unir listas dobles
unir listas dobles

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

  Al elegir la primera opción del menú, 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 unida con todos los elementos de ambas listas dobles.

  Y finalmente la opción salir, que su mismo nombre lo indica, salir de la aplicación.

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 en listas dobles en C++