Está en la página 1de 2

Ejercicio n3:

Implementar una funcin Mezcla2 que tenga como parmetros dos listas de enteros ordenados de menor a mayor y que devuelva una nueva lista como unin de ambas con sus elementos ordenados de la misma forma.

Una implementacin para esta funcin puede ser:


Lista Mezcla2(Lista l1,Lista l2) { Lista L; Posicion p1,p2; int aux1,aux2; /*En la lista L guardaremos el resultado*/ L=CrearLista(sizeof(int)); /*Utilizamos p1 y p2 para recorrer las dos listas*/ p1=PrimeroLista(l1); p2=PrimeroLista(l2); /*Obtenemos los elementos apuntados por p1 y p2 ,el menor*/ /*de ellos se inserta en el resultado y se adelanta en una*/ /*posicion.Se repite el proceso hasta que una lista queda */ /*sin elementos (cuando p1 o p2 llegan al final) */ while (p!=FinLista(l1)&& p2!=FinLista(l2)){ Recuperar(&aux1,p1,l1); Recuperar(&aux2,p2,l2); if (aux1 < aux2){ p1=Siguiente(p1,l1); Insertar(&aux1,FinLista(L),L); } else{ p2=Siguiente(p2,l2); Insertar(&aux2,FinLista(L),L); } } /*Si p1 no ha llegado al final hay que vaciar l1 al final*/ /*de la lista resultado*/ While (p1!=FinLista(l1)){ Recuperar(&aux1,p1,l1); p1=Siguiente(p1,l1); Insertar(&aux1,FinLista(L),L); } /*Si p2 no ha llegado al final hay que vaciar l2 al final*/ /*de la lista resultado*/ while (p2!=FinLista(l2)){ Recuperar(&aux2,p2,l2);

p2=Siguiente(p2,l2); Insertar(&aux2,FinLista(L),L); } /*Devolvemos L como resultado estando ya l1 y l2 vacias */ return L;

También podría gustarte