采用循环数组实现队列,使用front和rear下标分别
采用循环数组实现队列,使用front和rear下标分别指示队头和队尾位置,增加一个标记变量flag来表明当前队列是否为满,重新设计并实现循环队列类
答案
class FlagCirQueue:
def __init__(self, cap=10):
self.cap = cap
self.arr = [None]*cap
self.front = 0
self.rear = 0
self.flag = False
def is_full(self):
return self.flag
def is_empty(self):
return not self.flag and self.front == self.rear
def enqueue(self, x):
if self.is_full():
raise Exception("满")
self.arr[self.rear] = x
self.rear = (self.rear + 1) % self.cap
if self.front == self.rear:
self.flag = True
def dequeue(self):
if self.is_empty():
raise Exception("空")
res = self.arr[self.front]
self.front = (self.front + 1) % self.cap
self.flag = False
return res