王道考研数据结构--4.1.顺序队列
发布人:shili8
发布时间:2025-03-05 06:42
阅读次数:0
**顺序队列**
顺序队列是一种线性数据结构,元素按照先进先出的原则排列。它的基本操作包括入队、出队和查看队首元素。
###4.1.1 定义和特点顺序队列的定义如下:
* 队列中的元素按顺序存储在一块连续的内存空间中。
* 队列的头部指向当前队首元素,尾部指向当前队尾元素。
###4.1.2 基本操作#### 入队(Enqueue)
入队是将新元素添加到队列末尾的过程。具体步骤如下:
1. 检查队列是否已满。如果队列已满,则需要扩容队列。
2. 将新元素添加到队列末尾。
class OrderQueue: def __init__(self, max_size): self.max_size = max_size self.queue = [None] * max_size self.head =0 self.tail = -1 def enqueue(self, value): if self.is_full(): print("队列已满") return False self.tail +=1 if self.tail >= self.max_size: self.tail =0 self.queue[self.tail] = value return True
#### 出队(Dequeue)
出队是将队首元素移除并返回的过程。具体步骤如下:
1. 检查队列是否为空。如果队列为空,则需要扩容队列。
2. 移除队首元素。
def dequeue(self): if self.is_empty(): print("队列已空") return None value = self.queue[self.head] self.queue[self.head] = None self.head +=1 if self.head >= self.max_size: self.head =0 return value
#### 查看队首元素查看队首元素是返回当前队首元素的过程。具体步骤如下:
1. 检查队列是否为空。如果队列为空,则需要扩容队列。
2. 返回队首元素。
def peek(self): if self.is_empty(): print("队列已空") return None return self.queue[self.head]
###4.1.3 实现下面是一个完整的顺序队列实现:
class OrderQueue: def __init__(self, max_size): self.max_size = max_size self.queue = [None] * max_size self.head =0 self.tail = -1 def enqueue(self, value): if self.is_full(): print("队列已满") return False self.tail +=1 if self.tail >= self.max_size: self.tail =0 self.queue[self.tail] = value return True def dequeue(self): if self.is_empty(): print("队列已空") return None value = self.queue[self.head] self.queue[self.head] = None self.head +=1 if self.head >= self.max_size: self.head =0 return value def peek(self): if self.is_empty(): print("队列已空") return None return self.queue[self.head] def is_full(self): return self.tail == (self.max_size -1) def is_empty(self): return self.head > self.tail# 测试order_queue = OrderQueue(5) print(order_queue.enqueue(1)) # Trueprint(order_queue.enqueue(2)) # Trueprint(order_queue.enqueue(3)) # Trueprint(order_queue.dequeue()) #1print(order_queue.peek()) #2
###4.1.4 总结顺序队列是一种线性数据结构,元素按照先进先出的原则排列。它的基本操作包括入队、出队和查看队首元素。通过实现这些基本操作,可以构建一个完整的顺序队列。