Angenommen, Sie haben eine verknüpfte Listenstruktur in Java. Sie besteht aus Nodes:
class Node {
Node next;
// some user data
}
und jeder Knoten verweist auf den nächsten Knoten, mit Ausnahme des letzten Knotens, bei dem der nächste Knoten Null ist. Angenommen, es besteht die Möglichkeit, dass die Liste eine Schleife enthält - d. h. der letzte Knoten hat statt einer Null einen Verweis auf einen der Knoten in der Liste, der vor ihm lag.
Was ist die beste Art zu schreiben?
boolean hasLoop(Node first)
die Folgendes zurückgeben würde true
wenn der angegebene Knoten der erste einer Liste mit einer Schleife ist, und false
sonst? Wie könnte man so schreiben, dass der Platzbedarf gleich bleibt und die Zeit angemessen ist?
Das folgende Bild zeigt, wie eine Liste mit einer Schleife aussieht: