在学习Python数据结构的过程中,队列(Queue)是一个基础而重要的概念。普通队列在频繁入队和出队操作后容易造成内存浪费,而循环队列则通过巧妙地复用空间解决了这一问题。本教程将手把手教你如何用Python循环队列实现一个高效、可复用的数据结构,即使是编程小白也能轻松上手!
循环队列是一种线性数据结构,它将普通队列的“尾部”与“头部”连接起来,形成一个环状结构。这样,当队列尾部到达数组末尾时,可以“绕回”到数组开头继续存储数据,从而有效利用内存空间。
我们将使用列表(list)作为底层存储结构,并维护两个指针:front(队头)和rear(队尾)。同时,为了区分队列“空”和“满”的状态,我们预留一个空位(即最大容量为 size 的队列最多只能存 size - 1 个元素)。
class CircularQueue: def __init__(self, size): self.size = size self.queue = [None] * size self.front = 0 # 队头指针 self.rear = 0 # 队尾指针 def is_empty(self): # 当 front == rear 时,队列为空 return self.front == self.rear def is_full(self): # 当 (rear + 1) % size == front 时,队列为满 return (self.rear + 1) % self.size == self.front def enqueue(self, data): if self.is_full(): print("队列已满,无法入队!") return False self.queue[self.rear] = data self.rear = (self.rear + 1) % self.size return True def dequeue(self): if self.is_empty(): print("队列为空,无法出队!") return None data = self.queue[self.front] self.front = (self.front + 1) % self.size return data def display(self): if self.is_empty(): print("队列为空") return # 从 front 到 rear 打印有效元素 i = self.front while i != self.rear: print(self.queue[i], end=' ') i = (i + 1) % self.size print() # 换行
# 创建一个容量为5的循环队列(实际最多存4个元素)cq = CircularQueue(5)# 入队操作cq.enqueue(10)cq.enqueue(20)cq.enqueue(30)cq.enqueue(40)# 尝试再入队一个(会失败,因为满了)cq.enqueue(50) # 输出:队列已满,无法入队!# 显示当前队列cq.display() # 输出:10 20 30 40# 出队操作print(cq.dequeue()) # 输出:10# 再次入队(此时有空间了)cq.enqueue(50)cq.display() # 输出:20 30 40 50
front == rear 时,队列为空。(rear + 1) % size == front 时,队列为满(牺牲一个存储单元)。rear = (rear + 1) % size。front = (front + 1) % size。通过本教程,你已经掌握了Python循环队列的基本原理与完整实现。这种数据结构在操作系统、网络缓冲、实时系统等领域有广泛应用。希望你能动手实践,加深理解!如果你觉得这篇队列操作教程对你有帮助,不妨收藏或分享给更多学习Python数据结构的朋友。
关键词回顾:Python循环队列、循环队列实现、Python数据结构、队列操作教程
本文由主机测评网于2025-12-23发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251212012.html