Tecnología

Inicio

Cómo recorrer de forma recursiva en una lista enlazada

La estructura de datos de lista enlazada es una poderosa alternativa a las matrices simples. A diferencia de las matrices, los datos se pueden añadir rápidamente a y retirados de una lista enlazada sin volver a crear el elemento de la lista de uno en uno. Sin embargo, a diferencia de las matrices, los datos en una lista vinculada sólo se puede acceder en orden. Usted puede hacer esto con un bucle simple o con una función recursiva (o auto-llamada). Este será escrito en Java, pero el código se puede implementar en cualquier lenguaje con sólo pequeñas modificaciones para adaptarse a las diferencias de sintaxis.

Instrucciones

1 Abra un editor de texto.

2 Pegue el siguiente código Java:

RecursiveLLTraverser public class {

public static void traverseList(LinkedList l) {

}

}

Todo el código irá dentro del método "traverseList".

3 Pegue el siguiente dentro del método "traverseList":

si (l.size () == 0) return;

si (l.size ()> 0) {

LinkedList n = l.clone();

Object o = n.removeFirst ();

o.doSomething ();

traverseList (n);

}

Esto toma una lista enlazada y hace un clon superficial de la misma con el primer elemento eliminado (y algunos procesamiento realizado sobre ella.) Que el clon se ejecuta entonces a través de la lista de la poligonal sí mismo. Finalmente, el clon estará vacío, en cuyo caso el método de la lista de desplazamiento simplemente volver.

Consejos y advertencias

  • Todos los algoritmos recursivos requieren al menos dos casos: un caso base, que debe volver, y un caso recursivo, que reduce el tamaño de los datos a algo logró más fácilmente. Uno de los errores comunes en los métodos recursivos es olvidar el caso base. Esto provoca un bucle infinito que con el tiempo se bloquea cuando el equipo se queda sin espacio de pila.
  • métodos recursivos dependen un ajuste de sistema llamado "tamaño de la pila", que cambia con el sistema operativo y el idioma. Esta sección de la memoria realiza un seguimiento de todos los métodos actualmente en ejecución. Intentar un algoritmo recursivo en una lista muy grande puede producir errores de pila.