循环队列的实现

class MyCircularQueue:

    def __init__(self, k: int):
        """
        Initialize your data structure here. Set the size of the queue to be k.
        """
        self.k=k
        self.front=-1
        self.rear=-1
        self.queue=[None]*k
        
        

    def enQueue(self, value: int) -> bool:
        """
        Insert an element into the circular queue. Return true if the operation is successful.
        """
        if self.isFull():     
            return False
        if self.isEmpty():
            self.front = 0
        self.rear = (self.rear + 1) % self.k
        self.queue[self.rear] = value
        return True
        

    def deQueue(self) -> bool:
        """
        Delete an element from the circular queue. Return true if the operation is successful.
        """
        if self.isEmpty():
            return False
        if self.front == self.rear:      # 出栈不需要真的删除元素,只需要改变头尾指针
            self.front = -1              # 首尾指针指到相同元素,且不为-1,此时必然仅有一个元素
            self.rear = -1
            return True
        self.front = (self.front + 1) % self.k
        return True
        

    def Front(self) -> int:
        """
        Get the front item from the queue.
        """
        return -1 if self.isEmpty() else self.queue[self.front]

    def Rear(self) -> int:
        """
        Get the last item from the queue.
        """
        return -1 if self.isEmpty() else self.queue[self.rear]
        

    def isEmpty(self) -> bool:
        """
        Checks whether the circular queue is empty or not.
        """
        return self.front == -1 and self.rear==-1
        

    def isFull(self) -> bool:
        """
        Checks whether the circular queue is full or not.
        """
        return (self.rear+1)%self.k==self.front

    # 输出队列中的元素
    def ShowQueue(self):
        for i in range(self.k):
            print(self.queue[i],end=' ')
        print(' ')
原文地址:https://www.cnblogs.com/jzxs/p/11374659.html