判斷鍊錶是否有環 雙指標法

2021-10-23 16:38:40 字數 594 閱讀 2286

//判斷乙個單向鍊錶是否有環

//思路:設定雙指標,一快一慢,若有環兩個指標一定相遇

// 快指標pf每次走一步,以便於遍歷所有結點

// 慢指標ps每次走兩步,目的是遍歷環中的每乙個結點

#include

using

namespace std;

//鍊錶結點

typedef

struct listnode

listnode;

bool

looplist

(listnode* head)

pf = pf-

>next-

>next;

while

(pf != ps)

pf = pf-

>next-

>next;

ps = ps-

>next;

}return

true;}

intmain()

else

system

("pause");

return0;

}

雙指標(快慢指標)判斷鍊錶是否有環

單鏈表的特點是每個節點知道下乙個節點 如果用乙個指標來判斷是否有環,當沒有環時,指標一直會指到鍊錶的為即指到null,但是當有環時,指標將陷入死迴圈,因為環形鍊錶中沒有null指標作為尾部節點 while head null head head.next return false 找到一種經典解法 ...

快慢指標判斷鍊錶是否有環

關於鍊錶是否有環,其實是一系列問題,主要包括以下幾個 使用快慢指標fast和slow,fast每次走兩步,slow每次走一步,如果有環,肯定會相遇,如果沒有,則指標fast遇到null退出。追及相遇問題。在環上相遇後,記錄第一次相遇點為pos,之後指標slow繼續每次走1步,fast每次走2步。在下...

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

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