1. 程式人生 > >判斷連結串列是否有環和環的大小及環的入口

判斷連結串列是否有環和環的大小及環的入口

1.判斷連結串列是否有環

雙指標法:定義兩個指標,一個步長是2一個步長是1,當兩個指標相遇時連結串列有環

2.計算連結串列環大小

設A的步長是1,B的步長是2。假設AB相遇A走了X步,那麼B就走了2X步。假設是第一次相遇,則B多走的路就是環的大小。即X。

3.計算環的入口

設環的大小為x,交點到開始的距離為t,交點到入口距離為c(圖中下面線段表示的距離),開始到入口距離為a(上圖上面線段表示的距離),總長為u。圖中環下面的點表示雙指標交點位置。

則有 x(環大小)+a=u、t+c=u。因x=t得a=c。

定義兩個指標,一個從頭跑,另一個從交點跑,兩個相遇的點就是入口。