队列是一种先入先出(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()
双端队列
双端队列允许队尾和队头都支持插入和删除
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)