演算法 判斷單鏈表中是否有迴路

2021-10-06 20:41:15 字數 334 閱讀 8375

設快、慢兩個指標:fast和slow,在程式開始時,二者都指向單鏈表的煉表頭,之後迴圈移動兩指標,fast指標在一次迴圈中向前移動兩步(fast=fast->next->next;),slow指標則只移動一步(slow=slow->next;),兩指標進行追趕,若在任何一次迴圈中兩指標指向同一結點,則說明此單鏈表中有迴路;而若二者中任何乙個指標指向了null(即到達了鍊錶末尾),則說明此單鏈表中沒有迴路。

/*     判斷鍊錶是否有環    */

bool islinkedlistcontainsloop(node *head)

return false;

判斷單鏈表中是否有環

define crt secure no deprecate include include include include define ok 1 define error 0 define true 1 define false 0 typedef int status 函式結果狀態 如ok。t...

判斷單鏈表中是否有環

單鏈表中的迴圈鍊錶尾結點不一定指向頭結點,也可以指向任意中間結點。此時若想判斷單鏈表中是否有環,就不能只是簡單的根據尾結點的next是不是頭結點來判斷,在此我提供三種方法 方法一 建立兩個指標p和q,其中p用來遍歷指標,每次只走一步,並記錄從根節點出發所走的步數,而q則是每次從根節點出發,到達p此時...

判斷單鏈表是否有環

1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fast,slow 初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。當然,fas...