采用循环数组实现队列,使用front和rear下标分别

采用循环数组实现队列,使用front和rear下标分别指示队头和队尾位置,增加一个标记变量flag来表明当前队列是否为满,重新设计并实现循环队列类

答案
class FlagCirQueue:
    def __init__(self, cap=10):
        self.cap = cap
        self.arr = [None]*cap
        self.front = 0
        self.rear = 0
        self.flag = False

    def is_full(self):
        return self.flag

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

    def enqueue(self, x):
        if self.is_full():
            raise Exception("满")
        self.arr[self.rear] = x
        self.rear = (self.rear + 1) % self.cap
        if self.front == self.rear:
            self.flag = True

    def dequeue(self):
        if self.is_empty():
            raise Exception("空")
        res = self.arr[self.front]
        self.front = (self.front + 1) % self.cap
        self.flag = False
        return res

题目信息

题号:8325
题型:简答题
知识点:Python
难度:普通