迴圈佇列 python實現

2021-10-05 13:41:05 字數 1935 閱讀 8618

出隊只能在隊頭進行

入隊只能在隊尾進行

在順序佇列中,尾指標到達佇列邊界時,就不能再進行入隊操作了

在迴圈佇列中,尾指標到達佇列邊界時,下一步指向下標0,如果有空位還可以繼續入隊

隊空隊滿的條件都是start = end,如何區分?

這時我們設定乙個標誌位flag,執行出隊操作時設為0,入隊操作時設為1

start = end的情況下(只有隊空和隊滿兩種情況):

剩下的另一種情況,即flag為0,就是隊列為空了

class

circlequeue

:def

__init__

(self,size)

:# 初始化佇列

self.queue =

[none

]* size

self.size = size

self.start =

0 self.end =

0 self.flag =

false

defisfull

(self)

:#判隊滿

return self.start == self.end and self.flag

defisempty

(self)

:#判隊空

return self.start == self.end and

not self.flag

defenqueue

(self,elem)

:#入隊

if self.isfull():

print

("the queue is full!"

)else

: self.queue[self.end]

= elem

if self.end == self.size -1:

self.end =

0else

: self.end +=

1 self.flag =

1def

dequeue

(self)

:#出隊

if self.isempty():

print

("the queue is empty!"

)else

: self.queue[self.start]

=none

if self.start == self.size -1:

self.start =

0else

: self.start +=

1 self.flag =

0if __name__ ==

"__main__"

:# 建立大小為9的迴圈佇列

q = circlequeue(9)

# 0 - 6入佇列

for i in

range(0

,7):

q.enqueue(i)

print

(q.queue)

#出隊2個元素

for i in

range(2

):q.dequeue(

)print

(q.queue)

# 0 - 6入佇列

for i in

range(0

,7):

q.enqueue(i)

print

(q.queue)

#出隊所有元素

for i in

range(13

):q.dequeue(

)print

(q.queue)

python實現迴圈佇列 迴圈佇列Python

我試圖在python中建立乙個迴圈佇列,以便在到達陣列中的最後乙個元素時指向頭部。我正在研究排隊方法,我遇到了一些問題。我正在嘗試使用乙個大小為4的陣列,並且能夠將值排隊到第4個點,但是當它執行elif語句時,我收到這個錯誤。typeerror 不支援 的運算元型別 node 和 int 有什麼想法...

實現迴圈佇列

利用陣列實現迴圈佇列,head tail並不能判斷佇列空與滿,需要另外加上乙個輔助 include include includeusing namespace std typedef struct node node define len 20 typedef int elemtype class...

迴圈佇列實現

迴圈佇列就是當資料寫到結尾後,在回到開頭接著寫,該過程類似迴圈鍊錶。如何實現這個到結尾後又轉到開頭呢?很簡單,取模操作!上兩個圖是迴圈佇列的兩種狀態,以下所寫的所有函式都可以對照著這兩幅圖來看。如下 filename buffer.h ifndef buffer h define buffer h ...