Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Node:
- def __init__(self, value):
- self.val = value
- self.next = None
- self.prev = None
- class MyCircularQueue:
- def __init__(self, k: int):
- self.k = k
- # front of the queue
- self.left = Node(None)
- # back of the queue
- self.right = Node(None)
- self.left.next = self.right
- self.right.prev = self.left
- self.size = 0
- def enQueue(self, value: int) -> bool:
- if self.size < self.k:
- new_node = Node(value)
- prv, nxt = self.right.prev, self.right
- prv.next, new_node.next = new_node, nxt
- nxt.prev, new_node.prev = new_node, prv
- self.size += 1
- return True
- return False
- def deQueue(self) -> bool:
- if self.size:
- prv, nxt = self.left, self.left.next.next
- prv.next = nxt
- nxt.prev = prv
- self.size -= 1
- return True
- return False
- def Front(self) -> int:
- if self.size:
- return self.left.next.val
- return -1
- def Rear(self) -> int:
- if self.size:
- return self.right.prev.val
- return -1
- def isEmpty(self) -> bool:
- return self.size == 0
- def isFull(self) -> bool:
- return self.size == self.k
- # Your MyCircularQueue object will be instantiated and called as such:
- # obj = MyCircularQueue(k)
- # param_1 = obj.enQueue(value)
- # param_2 = obj.deQueue()
- # param_3 = obj.Front()
- # param_4 = obj.Rear()
- # param_5 = obj.isEmpty()
- # param_6 = obj.isFull()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement