如圖,如果單連結清單有環,則在周遊時,在通過6之後,會重新回到3,那麼我們可以在周遊時使用兩個指針,看兩個指針是否相等。

方法一:使用p、q兩個指針,p總是向前走,但q每次都從頭開始走,對于每個節點,看p走的步數是否和q一樣。如圖,當p從6走到3時,用了6步,此時若q從head出發,則隻需兩步就到3,因而步數不等,出現沖突,存在環
方法二:使用p、q兩個指針,p每次向前走一步,q每次向前走兩步,若在某個時候p == q,則存在環。
代碼如下:
如圖,如果單連結清單有環,則在周遊時,在通過6之後,會重新回到3,那麼我們可以在周遊時使用兩個指針,看兩個指針是否相等。
方法一:使用p、q兩個指針,p總是向前走,但q每次都從頭開始走,對于每個節點,看p走的步數是否和q一樣。如圖,當p從6走到3時,用了6步,此時若q從head出發,則隻需兩步就到3,因而步數不等,出現沖突,存在環
方法二:使用p、q兩個指針,p每次向前走一步,q每次向前走兩步,若在某個時候p == q,則存在環。
代碼如下: