(转)求单链表是否有环,环入口和环长
生活随笔
收集整理的這篇文章主要介紹了
(转)求单链表是否有环,环入口和环长
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://www.cnblogs.com/youxin/p/3303172.html
1.鏈表中是否有環的判斷 可以設置兩個指針(fast,slow),初始值均指向頭,slow每次向前一步,fast每次向前兩步; 如果鏈表中有環,則fast先進入環中,而slow后進入環中,兩個指針在環中必定相遇; 如果fast遍歷到尾部為NULL,則無環 2.鏈表有環,判斷環的入口點 當fast若與slow相遇時,slow肯定沒有走遍歷完鏈表,而fast已經在環內循環了n圈(1<=n)。假設slow走了s步,則fast走了2s步(fast步數還等于s 加上在環上多轉的n圈),設環長為r,則:2s = s + nr
s= nr
設整個鏈表長L,入口環與相遇點距離為x,起點到環入口點的距離為a。
a + x = nr
a + x = (n – 1)r +r = (n-1)r + L - a
a = (n-1)r + (L – a – x)
轉載于:https://www.cnblogs.com/wrencai/p/5815805.html
總結
以上是生活随笔為你收集整理的(转)求单链表是否有环,环入口和环长的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ferguson游戏
- 下一篇: 为对象添加方法mothod