單鏈表 判斷鍊錶是否有環,並輸出環的入口結點

2021-10-01 18:33:47 字數 766 閱讀 8305

快慢引用:

1.定義兩個結點 fast 與 slow,起始位置均為頭部結點;

2.fast一次走兩個結點,slow一次走乙個結點;

3.當fast與low相遇,則為有環。

//快慢引用

public static >boolean isloop(singlelinklink)

}return false;

}

快慢引用為2倍的關係:因為兩者時間相同,fast的速度為slow速度的2倍,故所走的路程也是slow的二倍(s=vt)。2慢走的路程 = 快走的路程。

//鍊錶不為空或鍊錶沒有結尾

while(!link.isempty() && fast.getnext()!= null)

return fast;}}

return null;

}

判斷單鏈表是否有環

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...