本文共 1308 字,大约阅读时间需要 4 分钟。
队列(Queue)是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。
进行插入的一端称为队尾(rear),插入动作称为进队或入队 进行删除的一端称为队头(front),删除动作称为出队 队列的性质:先进先出(First-in, First-out) 为了让队列可以循环使用,这里我们提出了环形队列 环形队列: 当队首指针front == Maxsize - 1时, 再前进一个位置就自动到0.'''TOPIC: 队列Queueauthor: Bluetime: 2020-08-11QQ: 2458682080'''class Queue: def __init__(self, size=100): self.queue = [0 for _ in range(size)] self.size = size self.rear = 0 # 队尾指针 self.front = 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.frontq = Queue(5)for i in range(4): q.push(i)print(q.is_filled())print(q.pop())q.push(4)
结果:
True0
有兴趣的读者也可以试试Python的内置队列模块deque
from collections import deque
转载地址:http://cbiwi.baihongyu.com/