Supponi di avere una struttura di elenchi collegati in Java. È composto da nodi:
class Node {
Node next;
// some user data
}
e ciascun nodo punta al nodo successivo, tranne l'ultimo nodo, che ha null per il prossimo. Supponiamo che esista la possibilità che l'elenco possa contenere un ciclo, ovvero che il nodo finale, invece di avere un valore nullo, abbia un riferimento a uno dei nodi nell'elenco precedente.
Qual è il modo migliore di scrivere
boolean hasLoop(Node first)
che restituirebbe true
se il nodo specificato fosse il primo di un elenco con un ciclo efalse
altrimenti? Come hai potuto scrivere in modo che occupasse una quantità costante di spazio e una ragionevole quantità di tempo?
Ecco un'immagine di come appare un elenco con un ciclo:
finite amount of space and a reasonable amount of time?
:)