python实现循环队列
循环队列的思想链接
- MyCircularQueue(k): 构造器,设置队列长度为 k 。
- Front: 从队首获取元素。如果队列为空,返回 -1 。
- Rear: 获取队尾元素。如果队列为空,返回 -1 。
- enQueue(value): 向循环队列插入一个元素。如果成功插入则返回真。
- deQueue(): 从循环队列中删除一个元素。如果成功删除则返回真。
- isEmpty(): 检查循环队列是否为空。
- isFull(): 检查循环队列是否已满。
class MyCircularQueue:
def __init__(self, k):
self.myqueue = []
self.head = -1
self.tail = -1
self.k = k
def enQueue(self, value):
if self.isFull() == True:
return False
if self.isEmpty() == True:
self.head = 0
self.tail = (self.tail + 1) % self.k
self.myqueue.insert(self.tail, value)
return True
def deQueue(self):
if self.isEmpty() == True:
return False
if self.head == self.tail:
self.head = -1
self.tail = -1
self.myqueue.pop(self.head)
self.head = (self.head + 1) % self.k
def Front(self):
if self.isEmpty() == True:
return -1
return self.myqueue[self.head]
def Rear(self):
if self.isEmpty() == True:
return -1
return self.myqueue[self.tail]
def isEmpty(self):
return self.head == -1
def isFull(self):
return ((self.tail + 1) % self.k) == self.head
obj = MyCircularQueue(3)
isEmpty = obj.isEmpty() //True
param1 = obj.enQueue(1) //True
param2 = obj.enQueue(2) //True
param3 = obj.enQueue(3) //True
addF = obj.enQueue(4) //False
tail = obj.Rear() //3
isFull = obj.isFull() //True
delElement = obj.deQueue()
addT = obj.enQueue(4) //True
head = obj.Front() //4
tail = obj.Rear() //2