class CircularQueue:
    def __init__(self, size):
        self.size = size
        self.queue = [None] * size
        self.front = 0
        self.rear = 0
        self.flag = 0

    def is_empty(self):
        return self.front == self.rear and self.flag == 0

    def is_full(self):
        return self.front == self.rear and self.flag == 1

    def enqueue(self, item):
        if self.is_full():
            print('overflow')
        else:
            self.queue[self.rear] = item
            self.rear = (self.rear + 1) % self.size
            if self.front == self.rear:
                self.flag = 1

    def dequeue(self):
        if self.is_empty():
            print('Empty')
        else:
            item = self.queue[self.front]
            self.front = (self.front + 1) % self.size
            if self.front == self.rear:
                self.flag = 0
            return item


m = int(input())
elements = list(map(int, input().split()))
n = int(input())

queue = CircularQueue(m + 1)
for element in elements:
    queue.enqueue(element)

for _ in range(n):
    queue.dequeue()

if queue.is_empty():
    print('Empty')
else:
    while not queue.is_empty():
        print(queue.dequeue())

代码说明:

  1. 使用标志位 flag 和 front、rear 指针来控制队列状态:
    • 当 front=rear 且 flag=0 时,表示队列为空
    • 当 front=rear 且 flag=1 时,表示队列已满
  2. enqueue 方法实现入队操作:
    • 判断队列是否已满,若已满则输出 'overflow';
    • 将元素加入到队列尾部;
    • 更新 rear 指针;
    • 若入队后 front=rear,则设置 flag=1,表示队列已满。
  3. dequeue 方法实现出队操作:
    • 判断队列是否为空,若为空则输出 'Empty';
    • 从队列头部取出元素;
    • 更新 front 指针;
    • 若出队后 front=rear,则设置 flag=0,表示队列为空。
  4. 主函数:
    • 输入入队次数 m 和 m 个入队元素;
    • 输入出队次数 n;
    • 初始化循环队列,并执行 m 次入队操作;
    • 执行 n 次出队操作;
    • 判断队列是否为空,若为空则输出 'Empty',否则输出队列中剩余元素。

示例输入:

3
5 3 6
2

示例输出:

6

代码解析:

这段代码展示了如何使用 Python 实现一个循环队列,并提供了完整的入队和出队操作。循环队列是数据结构中一种常用的队列类型,它通过使用一个固定大小的数组来实现,并使用 front 和 rear 指针来指示队列的头部和尾部。通过循环的方式,可以利用数组的全部空间,避免内存浪费。

通过这个代码示例,我们可以更好地理解循环队列的实现原理,并将其应用于实际的编程场景中。

Python 实现循环队列:入队、出队算法及判断空满

原文地址: https://www.cveoy.top/t/topic/vfx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录