20.7.Escriba un programa para combinar dos objetos de lista ordenada de enteros en un solo objeto de lista ordenada de
enteros. La función combinar debe recibir referencias a cada uno de los objetos lista que se van a combinar, y debe devolver una
referencia a objeto lista en el que se colocarán los elementos combinados.
/*
* C++ - Ordenar y combinar numeros en una lista enlazada simple
*dev c++ ver 4.9.2 , usar cstdlib para versiones mayores
*/
#include <iostream>
using namespace std;
struct nodo{
int nro; // en este caso es un numero entero
struct nodo *sgte;
};
typedef struct nodo *Tlista,*Tlista2;
Tlista inicio, fin;
Tlista2 inicio2,fin2;
void generarLista( Tlista &inicio, Tlista &fin, int n )
{
Tlista q;
for(int i=0; i<n; i++)
{
q = new(struct nodo);
q->nro = rand()%30;
if(inicio==NULL)
{
q->sgte = inicio;
inicio = q;
fin = q;
}
else
{
q->sgte = fin->sgte;
fin->sgte = q;
fin = q;
}
}
inicio = inicio->sgte;
}
}
void ordenarLista(Tlista lista)
{
Tlista actual , siguiente;
int t;
actual = lista;
while(actual->sgte != NULL)
{
siguiente = actual->sgte;
while(siguiente!=NULL)
{
if(actual->nro > siguiente->nro)
{
t = siguiente->nro;
siguiente->nro = actual->nro;
actual->nro = t;
}
siguiente = siguiente->sgte;
}
actual = actual->sgte;
siguiente = actual->sgte;
}
}
void concatenar(Tlista &inicio, Tlista &inicio2)
{
Tlista aux = inicio;
while(aux->sgte)
{
aux = aux->sgte;
}
aux->sgte = inicio2;
}
/* Funcion Principal
------------------------------------------------------------------*/
int main()
{
inicio = NULL;
fin = NULL;
inicio2 = NULL;
fin2 = NULL;
system("color 0b");
generarLista( inicio, fin, 4 );
ordenarLista( inicio );
cout<<"\n\n LISTA:\n\n";
reportarLista( inicio );
generarLista( inicio2, fin2, 5 );
ordenarLista( inicio2 );
cout<<"\n\n LISTA:\n\n";
reportarLista( inicio2 );
concatenar( inicio , inicio2 );
ordenarLista( inicio );
cout<<"\n\n LISTA:\n\n";
reportarLista( inicio );
system("pause");
return 0;
}
No hay comentarios.:
Publicar un comentario