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