Verlinkte Listen

Listen sammeln und subtrahieren

Erstellen Sie ein Programm, das das Einfügen von zwei Listen ermöglicht, das Programm muss die beiden Listen anzeigen, die beiden Listen in eine dritte Liste einfügen, die Entfernung beider Listen berechnen und das Ergebnis in einer dritten Liste anzeigen.

#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 NUMEROSn";
    cout<<"[2]->INTERCALARn";
    cout<<"[3]->UNIRn";
    cout<<"[4]->RESTARn";
    cout<<"[0]->SALIRn";
    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;
      }
} 

Weiter mit den verlinkten Listen verkünde ich folgenden Beitrag: Importieren und Anzeigen von Elementen aus einer verknüpften Liste