驗證鍊錶是否有環

2021-10-04 02:13:18 字數 402 閱讀 9557

宣告乙個快指標、乙個慢指標,快指標一次走兩步,慢指標一次走一步。如果快慢兩個指標相遇,說明鍊錶有環。

至於為什麼快慢兩個指標相遇就說明鍊錶中有環,這個牽扯到數學證明。這裡就不論證了,我們直接用結論。

初始化的時候,快指標指向head.next,慢指標指向head。

public static boolean  checkcircle(node head) 

node fast = head.next;

node slow = head;

while(fast != null && fast.next != null)

return false;

}

如何判斷鍊錶是否有環 鍊錶是否有環的判斷

對於鍊錶是否存在環,有三個問題需要考慮 1.是否有環 2.入環節點 3.環的長度 第一種方法快慢指標法,也稱之為龜兔演算法,設定兩個指標,慢指標和快指標。最開始均指向鍊錶的頭節點,之後,快指標每次後移兩個節點,慢指標每次後移乙個節點。1.如果快指標指向空,則鍊錶無環 2.若快指標和慢指標再次指向乙個...

鍊錶是否相交,鍊錶是否有環問題

1 乙個單鏈表,判斷是否有環,環的入口節點 分析 兩個指標,慢指標一次走一步,快指標一次走兩步,如果有環肯定會相交 listnode pnode bool i istloop listnode head return false 找出環的入口 環入口到相遇點為x,從開始到環入口點長度為a,環長為r,...

鍊錶 檢測是否有環

typedef struct node node,lnode 單鏈表bool isloop lnode ln return true 檢測兩個鍊錶是否相交 一種方法 首尾相交,如果有環則相交 否則不相交。node gettailnode lnode ln if null ln return null...