Advertisement
smj007

Untitled

Mar 6th, 2024
797
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.65 KB | None | 0 0
  1. class Node:
  2.     def __init__(self, value):
  3.         self.val = value
  4.         self.next = None
  5.         self.prev = None
  6.  
  7. class MyCircularQueue:
  8.  
  9.     def __init__(self, k: int):
  10.         self.k = k
  11.         # front of the queue
  12.         self.left = Node(None)
  13.         # back of the queue
  14.         self.right = Node(None)
  15.  
  16.         self.left.next = self.right
  17.         self.right.prev = self.left
  18.  
  19.         self.size = 0
  20.        
  21.     def enQueue(self, value: int) -> bool:
  22.         if self.size < self.k:
  23.             new_node = Node(value)
  24.             prv, nxt = self.right.prev, self.right
  25.             prv.next, new_node.next = new_node, nxt
  26.             nxt.prev, new_node.prev = new_node, prv
  27.             self.size += 1
  28.             return True
  29.  
  30.         return False
  31.        
  32.     def deQueue(self) -> bool:
  33.         if self.size:
  34.             prv, nxt = self.left, self.left.next.next
  35.             prv.next = nxt
  36.             nxt.prev = prv
  37.             self.size -= 1
  38.             return True
  39.  
  40.         return False
  41.  
  42.     def Front(self) -> int:
  43.         if self.size:
  44.             return self.left.next.val
  45.         return -1
  46.        
  47.     def Rear(self) -> int:
  48.         if self.size:
  49.             return self.right.prev.val
  50.         return -1
  51.        
  52.     def isEmpty(self) -> bool:
  53.         return self.size == 0
  54.        
  55.  
  56.     def isFull(self) -> bool:
  57.         return self.size == self.k
  58.        
  59. # Your MyCircularQueue object will be instantiated and called as such:
  60. # obj = MyCircularQueue(k)
  61. # param_1 = obj.enQueue(value)
  62. # param_2 = obj.deQueue()
  63. # param_3 = obj.Front()
  64. # param_4 = obj.Rear()
  65. # param_5 = obj.isEmpty()
  66. # param_6 = obj.isFull()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement