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