資料結構鍊錶之迴圈鍊錶 4

2021-10-04 20:17:03 字數 1897 閱讀 1254

迴圈鍊錶定義

迴圈鍊錶的構建

class

node

:def

__init__

(self, item)

: self.item = item

self.

next

=none

first = node(

'aa'

)second = node(

'bb'

)third = node(

'cc'

)forth = node(

'dd'

)fifth = node(

'ee'

)first.

next

= second

second.

next

= third

third.

next

= forth

forth.

next

= fifth

# create a circle list

fifth.

next

= first

將單鏈表的尾部結點的指標指向頭結點即可

約瑟夫問題

python**實現

class

node

:def

__init__

(self, item)

: self.item = item

self.

next

=none

defcircle_list()

: head =

none

for i in

range(1

,42):

if i ==1:

first = node(i)

head = first

continue

# i != 1

first.

next

= node(i)

first = first.

next

if i ==41:

first.

next

= head

# iterate the linked list circle

cur = head

count =

1while cur != cur.

next

: count +=

1 prev = cur

cur = cur.

next

# print(f"count:")

if count ==3:

print

(cur.item)

prev.

next

= cur.

next

cur = cur.

next

count =

1print

(cur.item)

circle_list(

)

輸出:

3,6,9,12,15,18,21,24,27,30,33,36,39,1,5,10,14,19,23,28,32,37,41,7,13,20,26,34,40,8,17,29,38,11,25,2,22,4,35,16,31
最後兩個數為16和31,兩人成功逃過了這場死亡遊戲

資料結構之迴圈鍊錶

迴圈鍊錶是資料結構中煉表的一種形式。相對於單向鍊錶,將單向鍊錶的尾結點的指標域指向該單向鍊錶的頭結點,就構成了迴圈鍊錶。可以這麼理解,單向鍊錶就是一張單程火車票,比如你要從北京坐火車去上海,路上經過濟南 南京,此時北京 濟南 南京 上海就構成了單向鍊錶的四個結點,如下圖所示。但是,單向鍊錶是有去無回...

資料結構之迴圈鍊錶

前面學習了鏈式結構鍊錶,鏈式結構鍊錶也有使用的侷限性。比如說我們經常碰到的迴圈關係,最經典的當然是約瑟夫問題了,那麼我們怎麼去解決約瑟夫問題呢?相信你看完本文章就會了,好了言歸正傳,我們生活中經常會遇到迴圈問題,例如,一年的12個月,春夏秋冬交替,這些迴圈關係怎麼在我們的程式體現出來,少廢話,上 第...

資料結構之迴圈鍊錶

首先先了解如何判斷單鏈表中是否有環 環的定義 鍊錶中的尾節點指向了鍊錶中的某個節點。方法一 使用p q兩個指標,p一直往前走,q每次從頭往前走,當p等於q但是p q移動的步數不相等的時候,存在環。方法二 使用p q兩個指標,p每次往前走一步,q每次往前走兩步,當存在p q的時候,存在環。迴圈鍊錶,只...