出隊只能在隊頭進行
入隊只能在隊尾進行
在順序佇列中,尾指標到達佇列邊界時,就不能再進行入隊操作了
在迴圈佇列中,尾指標到達佇列邊界時,下一步指向下標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 ...