JAVA實現 查詢有環鏈表起始位置

2021-06-26 19:56:21 字數 1026 閱讀 5218

public class findcirclebeginning 

public listnode(int id, listnode next)

}public listnode createlist(int n)

return head; }

/*** @param n 鍊錶總長度

* @param m 環所在的位置,head為0,不計算入內,所以長度為n的鍊錶位置分別為1-n

* @return

*/public listnode createlist(int n, int m)

listnode head = new listnode(0,null);

listnode p = head;

for (int i = 1; i <= n; ++i)

listnode q = head;

for (int i = 1; i <= m; ++i)

p.next = q;//加環

return head; }

/*** @param head 鍊錶的頭指標

* 為防止有環存在的鍊錶無線迴圈下去,設定了limit長度為展示總長度

*/public void displaylist(listnode head)

if (i > limit) else }

public listnode findcircle(listnode head)

listnode fast = head.next;

listnode slow = head.next;

boolean hascircle = false;

while (true) else

if (slow == fast)

} if (hascircle)

return slow;

} else

} public static void main(string args)

}}

java實現單鏈表 雙鏈表 環鏈表

鍊錶是程式裡重要的資料結構,在程式世界運用很廣泛,眾所周知的當屬於jdk裡的linklist了。鍊錶的優點,是相對於陣列來說,擴容是非常快的,如果是陣列擴容,陣列是新申請乙個更大空間的陣列,然後把老陣列內的資料複製到新陣列 而鍊錶就不必申請新鍊錶,直接再分配乙個元素的儲存空間即可。鍊錶的缺點,相對於...

java 判斷單鏈表是否有環

兩個指標h1,h2都從頭開始遍歷單鏈表,h1每次向前走1步,h2每次向前走2步,如果h2碰到了null,說明環不存在 如果h2碰到本應在身後的h1說明環存在 也就是發生了套圈 如果環不存在,一定是h2先碰到null 如果環存在,h2與h1一定會相遇,而且相遇的點在環內 h2比h1遍歷的速度快,一定不...

java判斷單鏈表是否有環

演算法和資料結構是面試考核的重點,其中經常問到單鏈表的問題,比如單鏈表的逆置 判斷單鏈表是否有環等問題,這些主要考察的程式設計師的基本 能力,今天給大家一起學習一下如何判斷單鏈表是否有環。那麼如何判斷乙個單鏈表是否有環呢?這個好像是谷歌的面試題目 先說一下演算法思想 我們可以設定兩個指標分別叫做sl...