判斷單鏈表是否有環

2021-06-06 12:14:55 字數 335 閱讀 7317

單鏈表有環是指原來的尾指標指向了該鍊錶中的任意乙個結點(不一定是頭結點,也就是說不一定是迴圈鍊錶)

思路:設定兩個指標fast和slow,都從煉表頭結點出發。fast每次步進2,slow每次步進1,因此fast相對於slow的步進速度是1。若有環則二者一定會重合,若無環則fast最先為null

**如下:

int process(node * l) while(fast != null && slow != fast);

if(fast == null) return 0; //有環

else return 1;

}

判斷單鏈表是否有環

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

判斷單鏈表是否有環

鍊錶結構 struct list 1 判斷單鏈表是否有環 採用追趕法,設定兩個指標p和q,從煉表表頭開始,p每一步走兩個節點,q每一步走乙個節點,如果鍊錶有環則p和q必相遇。如下 判斷鍊錶是否有環,時間複雜度o n 空間複雜度o 1 list hasloopinlist list head else...

判斷單鏈表是否有環

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