un tipo abstracto de datos ( TAD ), una lista o una lista vinculada como se le llama comúnmente , es una de las estructuras de datos fundamentales de la informática y una de las primeras alternativas a la simple array aprendido por un estudiante de informática . A pesar de que sacrifica la capacidad de moverse a la mitad de la lista sin tener que buscar a través de la primera lista , la lista ADT hace trivialmente fácil de ampliar y reducir el tamaño de los datos almacenados. Este código se implementa en Java , ya incorporado en la estructura de datos vinculada de Java nos permite llegar directamente al punto , pero la misma lógica podría aplicarse con la modificación mínima en cualquier otro lenguaje similar a C . Instrucciones
1
Crea tus dos listas enlazadas e inicializar con algunos datos ordenados pegando lo siguiente en un archivo Java:
LinkedList list1 = new LinkedList ( ) ;
LinkedList list2 = new LinkedList ();
for (int x = 0 ; x < 100 ; x + +) tiene dos listas enlazadas llenos de números aleatorios que han sido ordenados
2
Crear una nueva lista enlazada para mantener la lista combinada pegando el siguiente : .
LinkedList fusionado = new LinkedList ();
3
Establecer una simple bucle while . Este bucle se procederá siempre y cuando ambas listas tienen al menos un elemento en ellos, y se moverá el más pequeño de los elementos principales de la lista resultante de la fusión : .
//Si bien ambas listas no están vacías
while (! list1.isEmpty () && ! list2.isEmpty () ) {
if ( list1.peek () < = list2.peek ()) {
fusionó . add ( list1.pop ());
} else {
merged.add ( list2.pop ()); }
}
el comando " Peek " se ve en el elemento en el frente de la lista, mientras que el " Pop ", ambas se ve en el elemento y lo elimina . Cuando se hace la comparación, sólo desea dar un vistazo a la parte superior de la lista para ver que es más pequeño . Cuando llega el momento de unificar las listas , quiere quitarle el valor superior y lo puso en las nuevas listas .
4
terminar el trabajo. Tan pronto como sea lista está vacía , no hay ninguna necesidad de seguir haciendo comparaciones . Por lo tanto , los viejos extremos de bucle , y otro bucle se crea para llenar el resto de la lista resultante de la fusión con los datos restantes de la última lista :
//Mientras que la primera lista no está vacía
mientras {
merged.add ( list1.pop ()); }
( list1.isEmpty ( !))
//mientras que la segunda lista no está vacía .
while {
merged.add ( list2.pop ()); }
( list2.isEmpty ( !))
5
Imprima los resultados para que pueda inspeccionar la lista combinada y asegurarse de que funcionaba correctamente :
int x = 1 ;
de (Doble y: fusionado ) {
sistema. out.println (x + " " + y);
x + + ; }