Design Circular Queue
class MyCircularQueue:
def __init__(self, k):
self.lim = k
self.empty_slots = k
self.arr = [None for _ in range(k)]
self.fx = -1
self.rx = -1
def enQueue(self, value) -> bool:
if not self.isFull():
if (self.fx == -1 and self.rx == -1):
self.fx = (self.fx + 1) % self.lim
self.rx = (self.rx + 1) % self.lim
self.arr[self.rx] = value
self.empty_slots = self.empty_slots - 1
return True
else:
return False
def deQueue(self) -> bool:
if self.isEmpty():
return False
self.empty_slots = self.empty_slots + 1
self.fx = (self.fx + 1) % self.lim
if self.empty_slots == 0:
self.fx = -1
self.rx = -1
return True
def Front(self) -> int:
if self.isEmpty():
return -1
return self.arr[self.fx]
def Rear(self) -> int:
if self.isEmpty():
return -1
return self.arr[self.rx]
def isEmpty(self) -> bool:
return self.empty_slots == self.lim
def isFull(self) -> bool:
return self.empty_slots == 0