有關單鏈表帶環的問題

2021-07-28 18:58:25 字數 883 閱讀 9547

1.檢查鍊錶是否帶環,若帶求長度,環入口點。

設定兩個快慢指標開始時指向起始位置,開始出發,如果這兩個指標相交,那麼存在環;從交點出發,當再次回到此點便可統計環長度;對與於環入口點,假設快指標每次走兩個位置,慢一直走乙個,如圖所示:

則只需乙個從起始點,乙個從交點移動,必會相交。

2. 檢查兩煉表否相交(鍊錶不帶環)

如果兩煉表得最後乙個位置相等,則相交。

如果帶環得話:

以下**沒有實現兩個帶環的相交

pnode checkcycle(plist plist)	//判斷環

while (slow != fast);

return slow;

}int getcyclelen(plist plist) //環長度

while (cur != plist);

return len;

}pnode getcycleentrynode(plist plist, pnode meet) //入口點

return entry;

}int checkcross(plist l1, plist l2) //相交(不帶環)

while (l2)

if (prelist1 == prelist2)

return 1;

else

return 0;

}

單鏈表帶環問題

判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?1 2 3 4 5 6 7 8 9 不帶環 鍊錶遍歷一次,到最後的節點的下乙個節點會指向null,此時鍊錶不帶環。帶環 在判斷鍊錶是否帶環之前,應該先判斷鍊錶是否為空。空鍊錶肯定不帶環。只要鍊錶帶環,對鍊錶進行遍歷就會形成死迴圈,沒有出口。這是就...

面試題 單鏈表帶環問題

關於單鏈表帶環問題 1 怎樣判斷乙個單鏈表是否帶環 2 如果帶環,環的長度怎麼計算 3 如果帶環,怎麼求環的入口 1 怎樣判斷乙個單鏈表是否帶環 我們知道,單鏈表如果帶環,那麼從煉表頭開始遍歷就會進入死迴圈。其實我們可以用上篇部落格中提到的兩個指標移動的思想來求解,在這裡可以讓兩個指標移動速度不同,...

一 單鏈表 帶環單鏈表的詳細講解

今天看了一篇關於帶環單鏈表精講的文章,在這裡給大家做乙個總結。之前看過很多有關單鏈表帶環的文章,但是有些文章講的太文章化,不容易理解,理論性太強。接下來我會用最簡單通俗易懂的語言解析這個問題。當你拿到乙個單鏈表的資料資訊時,我相信大部分的人都會選擇去判斷一下這個單鏈表是否有環?這也是最基本的反應。下...