Queues implementation in python!


Queue datastructure(FIFO)

This code works like queues that are implemented in c++ and java having both front and rear pointers using list as an underlying datastructure.

The only Exception is that we need to initialise the front and rear pointers to None initially.
As we know that negative indexing is possible in list which leads to some error in python.

This code may have some limitations but it is good to know how queue works in a traditional way

class Queue:
  def __init__(self,capacity):
    self.capacity = capacity
    self.queue = [None]*capacity
    self.front = None
    self.rear = None
    
  def isFull(self):
    if self.rear == self.capacity - 1:
      print("Overflow condition!")
    
    return self.rear == self.capacity - 1
  
  def isEmpty(self):
    if self.front is None:
      print("Underflow condition!")
      
    return self.front is None
      
  def enqueue(self,item):
    if self.isFull():
      return
    else:
      if self.front is None:
        self.front = 0
        self.rear = 0
      else:
        self.rear += 1
    
    self.queue[self.rear] = item
  
  def dequeue(self):
    if self.isEmpty():
      return 
    else:
      item = self.queue[self.front]
      self.front += 1
      if self.front > self.rear:
        self.front = self.rear = None
      return item
      
  def display(self):
    if self.isEmpty():
      print("Queue is empty!")
    else:
      itr = self.front
      print("Queue: ",end = "")
      while itr <= self.rear:
        print(self.queue[itr],end = " ")
        itr += 1

q = Queue(5)
#q.dequeue()
q.enqueue(10)
q.enqueue(11)
q.enqueue(12)
q.enqueue(13)
q.enqueue(14)
q.enqueue(15)
q.display()
print()
q.dequeue()
q.dequeue()
q.dequeue()
q.display()

Another way of implementing queue is by using list operations or inbuilt module known as deque

Hope this was helpful!!