class MyQueue:
"""
头指针front指向队头元素,尾指针rear指向队尾元素的下一个位置
牺牲一个空间位置用于区分队空队满
"""
def __init__(self, capacity):
self.capacity = capacity
self.data = [None] * self.capacity
self.front = self.rear = 0
def isEmpty(self):
return self.front == self.rear
def isFull(self):
# 队尾下标+1
return (self.rear + 1) % self.capacity == self.front
def enqueue(self, value):
"""
入队
:param value: 要插入的值
:return:
"""
if self.isFull():
raise Exception('队列已经满了!')
else:
self.data[self.rear] = value
self.rear = (self.rear + 1) % self.capacity
def dequeue(self):
"""
出队
:return: 被删除的元素
"""
if self.isEmpty():
raise Exception('队列已经空了!')
else:
de_queue_element = self.data[self.front]
self.front = (self.front + 1) % self.capacity
return de_queue_element
def output(self):
i = self.front
while i != self.rear:
print(self.data[i])
i = (i + 1) % self.capacity
m = MyQueue(7)
m.enqueue(3)
m.enqueue(2)
m.enqueue(1)
m.enqueue(7)
m.enqueue(7)
m.enqueue(7)
m.dequeue()
m.dequeue()
m.dequeue()
m.enqueue(66)
m.enqueue(55)
m.enqueue(44)
m.output()