寫了好久終於把邏輯理順了,刪刪減減的注釋沒寫多少。不過作為新手還是很欣慰
class
mycircularqueue
(object):
# 設定定義傳進來的引數k,也就是佇列最大值,然後頭指標,尾指標,建立乙個內部都為空且最大為k+1的列表
def__init__
(self, k)
: self.queue =
[none
]* k # 空列表
self.maxsize = k +
1# 最大值
self.head =
0# 頭指標
self.tial =
0# 尾指標
self.tag =
0# 新增識別符號,判斷佇列空滿狀態
defenqueue
(self, value)
:# 判斷列表空滿狀態,不滿就進行插入,並讓頭指標為0,尾指標向下移動一位
if(self.isfull()==
-1):
# print('列表滿')
self.tag =
1return
if(self.isempty()==
true):
# print('列表為空')
self.queue[self.tial]
= value
self.tial =
(self.tial +1)
% self.maxsize
self.tag =
1return
self.queue[self.tial]
= value
self.tial =
(self.tial +1)
% self.maxsize
self.tag =
1def
dequeue
(self)
:# 判斷列表是否為空
if(self.isempty()==
true):
print
('隊列為空,無法判定!'
) self.tag =
0return
data = self.queue[self.head]
# 保留的火種,可能有用
self.queue[self.head]
=none
self.head =
(self.head +1)
% self.maxsize
if self.head == self.tial:
self.tag =
0return
deffront
(self)
:# 判斷列表是否為空
if(self.isempty()==
true):
print
('隊列為空,沒法取出來!'
) self.tag =
0return-1
else
: data = self.queue[self.head]
self.queue[self.head]
=none
self.head =
(self.head +1)
% self.maxsize
self.tag =
1if self.head != self.tial:
return data
else
: self.tag =
0return
'佇列空'
defrear
(self)
:# 判斷列表是否為空
if(self.isfull()==
0):print
('隊列為空,沒法取出來!'
)return-1
else
: data = self.queue[self.tial -1]
self.queue[self.tial -1]
=none
self.tial =
(self.tial -1)
% self.maxsize
return data
defisfull
(self):if
(self.tag ==1)
and(
(self.tial +1)
% self.maxsize == self.head)
:# print('隊列為滿')
return-1
else
:# print('佇列非滿')
return
1def
isempty
(self):if
(self.tag ==0)
and(self.tial == self.head)
:return
true
obj = mycircularqueue(4)
# param_1 = obj.enqueue(1)
for i in
range(4
):obj.enqueue(i)
print
(obj.queue)
# param_2 = obj.dequeue()
for i in
range(4
):obj.dequeue(
)print
(obj.queue)
# param_3 = obj.front()
print
(obj.front())
# param_4 = obj.rear()
print
(obj.rear())
# param_5 = obj.isempty()
# print(obj.isempty())
# param_6 = obj.isfull()
# print(obj.isfull())
佇列 迴圈佇列的實現
為了可以重新利用佇列底層陣列中已刪除元素所佔的空間,消除可能出現的 假滿 現象,將順序佇列改進為迴圈佇列。迴圈佇列是首尾相連的佇列 當front rear變數達到底層陣列的capacity 1之後,再向前以為就變成0.入隊 1 判斷佇列是否已滿,已滿丟擲越界異常 2 不滿的話把元素查到隊尾,並且re...
迴圈佇列的實現
佇列是一種先進先出的線性表,具有線性表的特性 分為鏈式佇列與順序佇列 順序佇列 用一段位址連續的儲存單元儲存資料元素,定義兩個游標 指向隊頭 的游標 front 指向隊尾的游標 rear 如果front rear隊列為空,如果 rear 1 maxsize front佇列滿 此為迴圈佇列 如普通佇列...
迴圈佇列的實現
include include includeusing namespace std typedef int qelementtype typedef int status define error 0 define ok 1 define maxqsize 10 佇列的資料抽象 typedef s...