El código recursivo en Java para fusionar dos LinkedList ordenados es
Node MergeLists (Lista de nodos1, Lista de nodos2)
{
Resultado del nodo = nulo;
if (lista1 == nulo)
return list2;
if (lista2 == nulo)
lista de retorno1;
if (list1.data <= list2.data)
{
resultado = lista1;
result.next = MergeLists (list1.next, list2);
}
más
{
resultado = lista2;
result.next = MergeLists (list1, list2.next);
}
resultado de retorno;
}
- ¿Cuáles son las ventajas y desventajas de los algoritmos y la heurística en la resolución de problemas?
- ¿Puede un gráfico en el que los pesos de los bordes no son necesariamente distintos tener más de un MST? Si es así, da un ejemplo. Si no, justifíquelo.
- ¿Cuál es el mejor algoritmo de programación que hayas creado?
- ¿Qué algoritmo es usado por la función Java () de la búsqueda de subcadenas?
- ¿Crees que KNN tiene privilegios en comparación con otros algoritmos de aprendizaje automático porque aprende con el tiempo?
Aquí el caso base es, si list1 es nulo entonces devolvemos list2 o si list2 es nulo devolvemos list1.
Consideremos un ejemplo
lista1: 1-> 2-> 5-> 6-NULL
list2: 3-> 4-> 7-> NULL
1-> 2-> 5-> 6-NULL y 3-> 4-> 7-> NULL
En este caso, al comparar 1 y 3, 1 es más pequeño, por lo que resultado = Nodo 1.
Esta será la cabeza de la lista resultante después de la fusión.
Ahora nos quedan las siguientes listas vinculadas para fusionar.
2-> 5-> 6-> NULL y 3-> 4-> 7-> NULL
Nuevamente se comparan 2 y 3 y el resultado será 2. Ahora las listas vinculadas a fusionar son
5-> 6-> NULL y 3-> 4-> 7> NULL
En este punto, se comparan 3 y 5 y se almacena 3 como resultado.
Las listas vinculadas restantes son
5-> 6-> NULL y 4-> 7-> NULL
Este proceso continuará hasta que se encuentre nulo y la recursión comience a desenrollarse y en cada función se devolverá el resultado almacenado.
Código en C
Nodo * Listas de combinación (Nodo * lista1, Nodo * lista2)
{
Nodo * resultado = NULL;
if (lista1 == nulo)
return list2;
if (lista2 == nulo)
lista de retorno1;
if (lista1-> datos datos)
{
resultado = lista1;
resultado-> siguiente = MergeLists (lista1-> siguiente, lista2);
}
más
{
resultado = lista2;
resultado-> siguiente = MergeLists (lista1, lista2-> siguiente);
}
resultado de retorno;
}