📅  最后修改于: 2023-12-03 14:46:51.228000             🧑  作者: Mango
队列(Queue)是一种线性结构,特点是在一端添加元素,另一端删除元素。队列的数据结构通常有两种实现方式,分别是链式存储结构和顺序存储结构。在本文中,我们将重点介绍基于数组的顺序存储结构实现队列。
队列的基本操作包括入队(Enqueue)和出队(Dequeue)操作。在基于数组的实现中,我们需要维护两个指针,分别表示队头和队尾。
具体来说,入队操作需要执行以下步骤:
出队操作需要执行以下步骤:
class Queue:
def __init__(self, capacity):
self.capacity = capacity
self.data = [0] * capacity
self.front = 0
self.rear = 0
def is_full(self):
return self.rear == self.capacity
def is_empty(self):
return self.front == self.rear
def enqueue(self, value):
if self.is_full():
raise Exception('Queue is full')
self.data[self.rear] = value
self.rear += 1
def dequeue(self):
if self.is_empty():
raise Exception('Queue is empty')
value = self.data[self.front]
self.front += 1
return value
基于数组的顺序存储结构实现队列是一种简单而高效的方法。队列的基本操作都是O(1)时间复杂度的,因此适合处理大量的数据。然而,这种实现方法存在一个严重的问题:当队列满时无法再插入元素,浪费了队列的存储空间。为了解决这个问题,我们可以使用循环队列(Circular Queue)的实现方式。