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