迴圈鍊錶定義
迴圈鍊錶的構建
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的時候,存在環。迴圈鍊錶,只...