【数据结构与算法】之深入解析如何确定单链表有环并求环的入口和长度
生活随笔
收集整理的這篇文章主要介紹了
【数据结构与算法】之深入解析如何确定单链表有环并求环的入口和长度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、檢測單鏈表中存在環
① 環的定義
- 單鏈表中結點都是一個結點指向下一個結點這樣一個一個鏈接起來的,直到尾結點的指針域沒有指向,單鏈表就到此結束。
- 鏈表有環的定義是,鏈表的尾結點的指針域并為空,指向了鏈接中間的某個結點,這樣就形成環,遍歷單鏈表就會死循環,這是因為破壞了結束條件。
- 如下所示:如果單鏈表有環,則在遍歷時,在通過結點 J 之后,會重新回到結點 D:
② 快慢指針檢測
- 設兩個工作指針,一個快一個慢,如果有環的話,它們會必然在某點相遇。
- 算法的思想是:設定使用兩個指針,fast 與 slow,它們起始都位于鏈表的頭部。隨后,slow 指針每次向后移動一個位置,而 fast 指針向后移動兩個位置。如果鏈表中存在環,則 fast 指針最終將再次與 slow 指針在環中相遇。
- 如下圖所示,設鏈表中環外部分的長度為 a。slow 指針進入環后,又走了 b 的距離與 fast 相遇。此時,fast 指針已經走完了環的 n 圈,因此它走過的總距
總結
以上是生活随笔為你收集整理的【数据结构与算法】之深入解析如何确定单链表有环并求环的入口和长度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构与算法】之深入解析二叉树的算法
- 下一篇: 【数据结构与算法】之深入解析运用链表结构