Digamos que tiene una estructura de lista vinculada en Java. Se compone de nodos:
class Node {
Node next;
// some user data
}
y cada nodo apunta al siguiente nodo, excepto el último nodo, que tiene un valor nulo para el siguiente. Digamos que existe la posibilidad de que la lista pueda contener un bucle, es decir, el Nodo final, en lugar de tener un valor nulo, tiene una referencia a uno de los nodos en la lista que vino antes.
¿Cuál es la mejor forma de escribir?
boolean hasLoop(Node first)
¿cuál volvería true
si el nodo dado es el primero de una lista con un bucle, y de lo false
contrario? ¿Cómo podrías escribir para que ocupe una cantidad constante de espacio y una cantidad razonable de tiempo?
Aquí hay una imagen de cómo se ve una lista con un bucle:
finite amount of space and a reasonable amount of time?
:)