--- 环形队列 (Circular Queue) --- 当队尾指针 front == Maxsize - 1 时,再前进一个位置就自动到 0 队首指针前进 1:front = (front + 1) % Maxsize 队尾指针前进 1:rear = (rear + 1) % Maxsize 队空条件:rear == front 队满条件:(rear + 1) % Maxsize == front
class CircularQueue(object):
def __init__(self, size=100):
self.queue = [0 for _ in range(size)]
self.size = size
self.front = 0
self.rear = 0
def push(self, element):
if not self.is_filled():
self.rear = (self.rear + 1) % self.size
self.queue[self.rear] = element
else:
raise IndexError('Queue is filled.')
def pop(self):
if not self.is_empty():
self.front = (self.front + 1) % self.size
return self.queue[self.front]
else:
raise IndexError('Queue is empty.')
# 判断队空
def is_empty(self):
return self.rear == self.front
# 判断队满
def is_filled(self):
return (self.rear + 1) % self.size == self.front