Queue

队列是一种先入先出(FIFO)的线性表,插入元素的一端称为队尾,删除元素的一端称为队头

实现

class Queue:
    def __init__(self):
        self.data = []

    def enqueue(self, ele):
        self.data.append(ele)

    def dequeue(self):
        return self.data.pop(0)

用栈实现队列

如何用栈实现一个队列

class Queue:
    def __init__(self):
        self.s1 = []
        self.s2 = []

    def enqueue(self, ele):
        self.s1.append(ele)

    def dequeue(self):
        while len(self.s1) > 0:
            self.s2.append(self.s1.pop())
        return self.s2.pop()

双端队列

双端队列允许队尾和队头都支持插入和删除

dequeue

class Dequeue:
    def __init__(self):
        self.data = []

    def addFront(self, ele):
        self.data.append(ele)

    def addRear(self, ele):
        self.data.insert(0, ele)

    def removeFront(self):
        self.data.pop()

    def removeRear(self):
        self.data.pop(0)

    def isEmpty(self) -> bool:
        return len(self.data) == 0

    def size(self) -> int:
        return len(self.data)