判斷鍊錶是否有環(1)

2021-10-23 22:45:18 字數 1467 閱讀 1076

#-*- 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到連線點的距離 頭指標到連線點的距離,因此,分別從碰撞點 頭指標開始走,相遇的...