Listas enlazadas
Intercalar listas y restar
Hacer un programa que permita ingresar dos listas, el programa debe mostrar las dos listas, intercalar la dos listas en una tercera lista, y debe calcular la resta de ambas listas y el resultado mostrarlo en una tercera lista.
#include <iostream.h>
#include <conio.h>
struct nodo
{
int nro;
struct nodo* sgte;
struct nodo* ante;
};
typedef struct nodo* Tlista;
void insertar(Tlista &,int);
void intercala(Tlista &,Tlista &,Tlista &);
void unir(Tlista &,Tlista &,Tlista &);
void listado(Tlista);
void restar(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]->INTERCALAR\n";
cout<<"[3]->UNIR\n";
cout<<"[4]->RESTAR\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<<"\nINSERTE VALOR ["<<(i+1)<<"]";
cin>>k;
insertar(lista1,k);
}
cout<<"\nLISTA NUMERO 2";
for(i=0;i<n;i++)
{
cout<<"\nINSERTE VALOR ["<<(i+1)<<"]";
cin>>k;
insertar(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;
case 3:
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;
case 4:
clrscr();
cout<<"LA LISTAS FUERON RESTADAS";
restar(lista1,lista2,lista5);
cout<<"\nLISTA 1";
listado(lista1);
cout<<"\nLISTA 2";
listado(lista2);
cout<<"\nLISTA RESTADA";
listado(lista5);
getch();
break;
}
}while(opc!=0);
}
void insertar(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;
insertar(lista3,x);
}
if(l2!=NULL)
{
x=l2->nro;
insertar(lista3,x);
}
l1=l1->sgte;
l2=l2->sgte;
}
}
void unir(Tlista &lista1,Tlista &lista2,Tlista &lista4)
{
int x;
Tlista l1,l2;
l1=lista1;
l2=lista2;
while(l1!=NULL)
{
x=l1->nro;
insertar(lista4,x);
l1=l1->sgte;
}
while(l2!=NULL)
{
x=l2->nro;
insertar(lista4,x);
l2=l2->sgte;
}
}
void listado(Tlista lista)
{
Tlista p;
p=lista;
while(p!=NULL)
{cout<<"\n";
cout<<p->nro;
p=p->sgte;
}
}
void restar(Tlista &lista1,Tlista &lista2,Tlista &lista5)
{
int x,r,y;
Tlista l1,l2;
l1=lista1;
l2=lista2;
while(l1!=NULL && l2!=NULL)
{if(l1!=NULL)
{
x=l1->nro;
}
if(l2!=NULL)
{
y=l2->nro;
}
r=x-y;
insertar(lista5,r);
l1=l1->sgte;
l2=l2->sgte;
}
}
Continuando con Listas enlazadas, les comparto el siguiente post: Ingresar y Mostrar elementos de una lista enlazada