Advertisement
Guest User

cqueue breh

a guest
Jul 21st, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.08 KB | None | 0 0
  1. #dynamic and great!
  2. class CQueue:
  3.     def __init__(self, N):
  4.         self.queue = [None] * N
  5.         self.head = 0
  6.         self.tail = 0
  7.         self.size = 0
  8.        
  9.     def enqueue(self, data):
  10.         if self.tail == self.head and self.size > 0:
  11.             print('cqueue full. doubling array size')
  12.             self.resize()
  13.         self.queue[self.tail] = data
  14.         self.tail = (self.tail + 1) % len(self.queue)
  15.         self.size += 1
  16.     def dequeue(self):
  17.         assert self.size == 0
  18.         else:
  19.             ret = self.queue[self.head]
  20.             #self.queue[self.head] = None
  21.             self.head = (self.head + 1) % len(self.queue)
  22.             self.size -= 1
  23.             return ret
  24.     def size(self):
  25.         return self.size
  26.     def resize(self, N=None):
  27.         if N == None:
  28.             N = len(self.queue)
  29.         if self.head == 0:
  30.             self.queue = self.queue + (N * [None])
  31.         else:
  32.             self.queue = self.queue[self.head:] + self.queue[:self.head] + (N * [None])
  33.             self.head = 0
  34.         self.tail = self.size
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement