如果鍊錶可能有環,判斷兩個鍊錶是否相交?

2021-07-11 01:24:19 字數 430 閱讀 2483

上網查詢了寫資料現做個總結。

可以分兩步:(1)判斷兩個鍊錶是否有環?若有環,入口點是什麼?

(2)判斷是否相交?

第乙個問題的典型解法為設定兩個指標p1和p2,p1每次走一步,p2每次走兩步,若有環,則p1和p2一定會相遇,否則沒有環。當p1和p2相遇時,另p2回到鍊錶起始處,每次走一步和p1同時移動,則兩者再次相遇時就是入口點。

第二個問題分一下幾種情況:

(1)若兩個鍊錶均無環,若相交則兩鍊錶的尾節點必定相同。

(2)若乙個有環,乙個無環,則必不相交。

(3)若兩者均有環,則兩者的環入口點若相同則相交,否則不相交。

對於情況(1)若想求相交點,可以將兩鍊錶的長度算出結果為s1,s2。用長的減去短的得到差值d,將長的先移動d步,然後兩者一起移動,則相遇點為相交點。

ps:**就不放了,寫的太爛。

判斷兩個單向鍊錶是否存在環

今天mayuyu來帶領你們討論如下三個問題 1 如何判斷乙個單鏈表是否存在環 2 如果存在環,如何找到環的入口點?3 兩個鍊錶中有環時,如何判斷相交?問題一 我們設定兩個指標,分別是fast和slow,初始都指向這個單向鍊錶的表頭,fast每次走兩步,而slow每次走一步,所以,我們知道如果有環,那...

鍊錶 合併兩個有序鍊錶

標籤 鍊錶 題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。解題思路 兩種解法 遞迴和非遞迴 拓展 參考 public listnode merge listnode list1,listnode list2 else 非遞迴 public li...

兩個鍊錶生成相加鍊錶

假設鍊錶中每乙個節點的值都在 0 9 之間,那麼鍊錶整體就可以代表乙個整數。給定兩個這種鍊錶,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶 1 為 9 3 7,鍊錶 2 為 6 3,最後生成新的結果鍊錶為 1 0 0 0。示例1 9,3,7 6,3 struct listnode class so...