📜  queue的数组实现(简单)(1)

📅  最后修改于: 2023-12-03 14:46:51.228000             🧑  作者: Mango

Queue的数组实现

队列(Queue)是一种线性结构,特点是在一端添加元素,另一端删除元素。队列的数据结构通常有两种实现方式,分别是链式存储结构和顺序存储结构。在本文中,我们将重点介绍基于数组的顺序存储结构实现队列。

实现思路

队列的基本操作包括入队(Enqueue)和出队(Dequeue)操作。在基于数组的实现中,我们需要维护两个指针,分别表示队头和队尾。

具体来说,入队操作需要执行以下步骤:

  1. 判断队列是否已满,如果已满则无法入队;
  2. 将元素插入到队尾;
  3. 队尾指针向后移动一位。

出队操作需要执行以下步骤:

  1. 判读队列是否为空,如果为空无法出队;
  2. 弹出队头元素;
  3. 队头指针向后移动一位。
代码实现
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)的实现方式。