Listas enlazadas

  Insertar y unir listas

Mediante el uso de Listas enlazadas, creamos un menú que permita insertar, unir y luego mostrar los elementos de la lista insertados.

El menú contará con 6 opciones, la cual contará con los siguientes atributos.

Nuestro programa debe permitir insertar elementos, unir las listas, mostrar los elementos de la lista y poder salir del programa. Para ingresar 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>
#define lim 100
struct nodo{
             int nro;
             struct nodo*sgte;
             };
typedef struct nodo*Tlista;
void insertar(Tlista &, int);
void unir(Tlista &, Tlista&, Tlista&);
void imprimir(Tlista);
void main()
{
 Tlista lista1=NULL;
 Tlista lista2=NULL;
 Tlista lista3=NULL;
 int opc,valor1,valor2;
 do
 {
  cout<<"1. Insertar "<<endl;
  cout<<"2. Unir"<<endl;
  cout<<"3. ver lista"<<endl;
  cout<<"4. Salir"<<endl;
  cout<<"Ingrese la opcion:";
  cin>>opc;
  switch(opc)
  {
   case 1 :
            cout<<"cantidad de elementos para la lista A:"<<endl;
            cin>>valor1;
            cout<<"Ingrese elementos a la lista:"<<endl;
            insertar(lista1, valor1);
            cout<<"cantidad de Elementos para la Lista B:"<<endl;
            cin>>valor2;
            cout<<"Ingrese elementos a la lista:"<<endl;
            insertar(lista2,valor2);
            break;
   case 2 :
            unir(lista1,lista2,lista3);
            cout<<endl<<"UNION DE LA LISTA A Y B"<<endl;
            imprimir(lista3);
            break;
   case 3: cout<<endl<<"LISTA A"<<endl;
           imprimir(lista1);
           cout<<endl<<"LISTA B"<<endl;
           imprimir(lista2);
           break;
   }
   }while(opc!=4);
   }

void imprimir(Tlista lista1)
 {
 while(lista1!=NULL)
   {cout<<lista1->nro<<endl;
    lista1=lista1->sgte;
   }
   cout<<endl;
 }

 void insertar(Tlista &lista1,int valor1)
 {Tlista t,q;
  int num,i;
  for(i=0;i<valor1;i++)
  {cin>>num;
   q=new(struct nodo);
   q->nro=num;
   q->sgte=NULL;
   if(lista1==NULL)
   lista1=q;
   else
   {
   t=lista1;
   while(t->sgte!=NULL)
   t=t->sgte;
   t->sgte=q;
   }
  }
 }
void unir(Tlista &lista1, Tlista &lista2, Tlista &lista3)
{
Tlista aux,seg,pri,afg;
aux=lista1;
seg=lista2;
pri=new(struct nodo);
pri->nro=aux->nro;
pri->sgte=NULL;
lista3=pri;
aux=aux->sgte;
while(aux!=NULL)
{pri=new(struct nodo);
pri->nro=aux->nro;
pri->sgte=NULL;
afg=lista3;

while(afg->sgte!=NULL)
 afg=afg->sgte;
afg->sgte=pri;
aux=aux->sgte;
}
while(seg!=NULL)
{pri=new(struct nodo);
pri->nro=seg->nro;
pri->sgte=NULL;
afg=lista3;

while(afg->sgte!=NULL)
afg=afg->sgte;
afg->sgte=pri;
seg=seg->sgte;
}
}

  Continuando con Listas enlazadas, les comparto el siguiente post: Eliminar e insertar al inicio, Búsqueda y Promedio de una lista