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!!