采用线性数组实现队列,并利用front和rear下标分

采用线性数组实现队列,并利用front和rear下标分别指示队头和队尾位置,当rear下标到达数组尾部时,将队列中所有的元素平移到数组的最前端。设计此队列类,并实现主要算法

答案
class ArrayQueue:
    def __init__(self, capacity=10):
        self.capacity = capacity
        self.data = [None]*capacity
        self.front = 0
        self.rear = 0

    def is_empty(self):
        return self.front == self.rear

    def size(self):
        return self.rear - self.front

    def enqueue(self, val):
        if self.size() == self.capacity:
            raise Exception("队列满")
        # rear碰数组尾部,全部平移到最前面
        if self.rear == self.capacity:
            for i in range(self.size()):
                self.data[i] = self.data[self.front+i]
            self.rear = self.size()
            self.front = 0
        self.data[self.rear] = val
        self.rear += 1

    def dequeue(self):
        if self.is_empty():
            raise Exception("队列空")
        res = self.data[self.front]
        self.front += 1
        return res

题目信息

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