23 鍊錶中環的入口節點

2021-08-27 21:28:11 字數 460 閱讀 7668

1.從鍊錶開始節點處初始化兩個快、慢指標

乙個走兩步,乙個走一步。若重合則存在環形鍊錶

2.判斷重合節點是否為空或者重合節點是否為鍊錶的末尾節點,如果是環形鍊錶則不應該有末尾節點(next=null表示鍊錶的末尾節點)

3.乙個指標從頭節點開始,乙個指標從重合節點處開始,兩個指標以相同的速度開始走,直到相遇則為環形鍊錶入口節點。

listnode* entrynodeofloop(listnode* phead)

if(pfast==

null

|| pfast->next==

null) //相遇節點不為空且不是鍊錶末尾節點

return

null;

pslow=phead;

while(pslow!=pfast)

return pslow;

}

鍊錶 23題 鍊錶中環的入口節點

如果乙個鍊錶中包含環,如何找出環的入口節點?解決這個問題的第一步是如何確定乙個鍊錶中包含環。我們可以用兩個指標來解決這個問題。定義兩個指標,同時從鍊錶的頭節點出發,乙個指標一次走一步,另乙個指標一次走兩步。如果走得快的指標追上了走得慢的指標,那麼鍊錶就包含有環 如果走得快的指標走到了鍊錶的末尾都沒有...

鍊錶中環的入口節點

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。思路 通過141題,我們知道可以通過快慢指標來判斷是否有環,現在我們假設兩個指標相遇在z點,如圖 那麼我們可以知道fast指標走過a b c b slow指標走過a b 那麼2 a b a b c b 所以a c 那麼此時讓slow回到起點,fast依然...

鍊錶中環的入口節點

題目描述 乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。演算法描述 受之前的面試題的啟發,如果我們在乙個有環的鍊錶中設定兩個鍊錶指標,乙個快,乙個慢,那麼兩個鍊錶指標相遇的時候,必然是位於鍊錶中的某個結點,利用這個結點,當我們從這個結點開始繼續遍歷,當再一次回到這個結點的時候,我們可以統計出環中的結...