我試圖檢查鏈表是否指向頭部的最後一個節點。此代碼似乎給出了問題的積極結果,但也給包含指向非頭節點的節點的列表提供了誤報。檢查鏈接列表是否加入回去開始
我一直在嘗試不同的東西,如檢查緩慢的節點是否等於回報真正的頭,但似乎並不奏效。
public boolean isLinkedToStart(Node head) {
if (head == null) {
return false;
}
Node fast = head.next;
Node slow = head;
while (fast != null && fast.next != null) {
if (fast.next.next == slow) {
return true;
}
fast = fast.next.next;
slow = slow.next;
}
return false;
}
有什麼建議嗎?
該算法(俗稱[Tortoise and Hare](http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare)算法)是一種通用循環檢測算法,如果鏈表包含**任意**循環,不一定是指向頭部的那個循環,你想要的是一個更具體的變體, – Santa
是以任何特殊的/可識別的方式定義的頭部? –
頭部是'頭部' – Santa