jueves, 2 de julio de 2015

Concatenar listas


20.6.Escriba un programa para concatenar dos objetos de lista enlazada de caracteres. El programa deberá incluir la función concatenar, que reciba referencias a ambos objetos lista como argumentos y que concatene la segunda lista con la primera.


/* C++  Programa que concatena listas
** 
**@autor: Cristian Quezada & Lucero Polo
**/

#include 

using namespace std;

struct nodo{
       char nom;
       struct nodo *sig;
};

nodo *inicio, *fin;
nodo *inicio2, *fin2;

nodo *generarLista( nodo *inicio,  int n ) //genero una lista aleatoria
{
     nodo *q;
     
     for(int i=0; i<n; i++)
   {
         q = new nodo;
         q->nom = (char)(70+i);
         
         if(inicio==NULL)
         {
              q->sig = inicio;
              inicio  = q;
              fin     = q;        
         }
         else
         {
              q->sig   = fin->sig;
              fin->sig = q;
              fin       = q;
         }
     }
     return inicio;
}




void mostrarLista(nodo *inicio)        //imprime listas
{    
    while(inicio != NULL)
    {
            cout<nom<<"   ";
            inicio=inicio->sig;
    }
 
}


nodo *generarLista2( nodo *inicio, int n ) 
{
     nodo *q , *inicio2 , *fin2;
     inicio2 = NULL;
     fin2    = NULL;
     
     for(int j=0; j<n; j++)
    {
         q = new nodo;
         q->nom = (char)(60+j);
         if(inicio2==NULL)
         {
              q->sig = inicio2;
              inicio2  = q;
              fin2     = q;        
         }
         else
         {
              q->sig   = fin2->sig;
              fin2->sig = q;
              fin2      = q;
         }
     }
     return inicio2;
}

nodo *concatenar(nodo *inicio , nodo *inicio2)
{
 nodo *aux = inicio;
 while(aux->sig)
 {
  aux = aux->sig;
 }
 aux->sig = inicio2;
 return inicio;
}
 
/*                        Funcion Principal
------------------------------------------------------------------*/
 

int main()
{
    inicio = NULL;
    inicio2 = NULL;
    
    system("color 0b");
 
    inicio=generarLista( inicio, 6 );
    
    cout<<"\n\n LISTA:\n\n";
    
    mostrarLista( inicio );

    inicio2=generarLista2( inicio , 6 );
    
    cout<<"\n\n LISTA 2:\n\n";
    
    mostrarLista( inicio2 );
    
    inicio=concatenar( inicio , inicio2);
    
    cout<<"\n\n LISTA 2:\n\n";
    
    mostrarLista( inicio );  cout<<"\n\n\n";

   system("pause");
   
   return 0;
}

No hay comentarios.:

Publicar un comentario