#-*- coding : utf-8 -*-
#判斷鍊錶是否有環
'''方法1.從頭結點開始,依次遍歷單鏈表中的每乙個節點。每遍歷乙個新節點,就從頭檢查新節點之前的所有節點,
用新節點和此節點之前的所有節點依次做比較。如果發現新節點和之前的某個節點相同,則說明該節點被遍歷過兩次,
鍊錶有環;如果之前的所有節點中不存在與新節點相同的節點,就繼續遍歷下乙個新節點,繼續重複剛才的操作。
時間複雜度為o(n**2),空間複雜度為o(1)
'''class
node
:def
__init__
(self,data =
none
,next
=none):
self.data = data
self.
next
=next
#單個建立節點
node1=node(5)
node2=node(3)
node3=node(7)
node4=node(2)
node5=node(6)
node6=node(8)
node7=node(1)
node1.
next
=node2
node2.
next
=node3
node3.
next
=node4
node4.
next
=node5
node5.
next
=node6
node6.
next
=node7
node7.
next
=node4
head1=node1
isfound=
true
while head1 !=
none
: data=head1.data
if(data==node1.data)
: head1 = head1.
next
continue
isfound=
false
head = node1
while head !=
none
: data1 = head.data
if(data == data1)
:print
(data)
isfound =
true
break
if(head.
next
==head1)
:break
head = head.
next
if(isfound)
:break
head1 = head1.
next
如何判斷鍊錶是否有環 鍊錶是否有環的判斷
對於鍊錶是否存在環,有三個問題需要考慮 1.是否有環 2.入環節點 3.環的長度 第一種方法快慢指標法,也稱之為龜兔演算法,設定兩個指標,慢指標和快指標。最開始均指向鍊錶的頭節點,之後,快指標每次後移兩個節點,慢指標每次後移乙個節點。1.如果快指標指向空,則鍊錶無環 2.若快指標和慢指標再次指向乙個...
(1)判斷鍊錶中是否有環
英文命題 given a linked list,determine if it has a cycle in it.follow up can you solve it without using extra space?definition for singly linked list.stru...
判斷鍊錶是否有環
1.如何判斷是否有環?如果有兩個頭結點指標,乙個走的快,乙個走的慢,那麼若干步以後,快的指標總會超過慢的指標一圈。2.如何計算環的長度?第一次相遇 超一圈 時開始計數,第二次相遇時停止計數。3.如何判斷環的入口點 碰撞點p到連線點的距離 頭指標到連線點的距離,因此,分別從碰撞點 頭指標開始走,相遇的...