如何檢視單鏈表是否有環?

2021-10-05 08:51:14 字數 1166 閱讀 7887

思路:就是因為有環,所以是沒有尾節點,也就是 node.next 永遠都是有值的。可以通過兩個前進速度不同的節點去迴圈,如果有相遇的時刻說明有環。

private

class

node

public

node

(object data)

}

private node createlink()

// node tem = head;

// while (tem.next != null)

// 新增環

cur.next = head.next.next.next;

// node tem1 = head;

// while (tem1.next != null)

return head;

}

private node isloop

(node head)

node slow = head.next;

node fast = head.next;

while

(fast != null && fast.next != null)

}return null;

}

private node isloopforhashmap

(node head)

hashset.

add(tem);}

return null;

}

public node findloopnode

(node head, node meetnode)

return first;

}

@test

public

void

testlink()

else

node meetnode =

findloopnode

(head, node)

; system.out.

println

(meetnode.data)

;}

判斷單鏈表是否有環

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