0% found this document useful (0 votes)
3 views2 pages

1067

The document defines a Circular Queue class with methods for enqueueing, dequeueing, checking if the queue is empty, and resizing the queue. It initializes a queue of fixed size, allows elements to be added or removed in a circular manner, and includes a main function to demonstrate its functionality. The queue can hold a maximum of 5 elements and provides feedback when it is full or empty.

Uploaded by

kusum0601d
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views2 pages

1067

The document defines a Circular Queue class with methods for enqueueing, dequeueing, checking if the queue is empty, and resizing the queue. It initializes a queue of fixed size, allows elements to be added or removed in a circular manner, and includes a main function to demonstrate its functionality. The queue can hold a maximum of 5 elements and provides feedback when it is full or empty.

Uploaded by

kusum0601d
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

class CircularQ:

_size = 5

def __init__(self):
self._data = [None]* CircularQ._size
self._n = 0
self._front = -1
self._rear = -1

def lenQ(self):
return self._n

def is_empty(self):
return self._n == 0

def first(self):

if self.is_empty():
raise Empty("Queue is Empty")
return self._data[self._front]

def dequeue(self):
if self.is_empty():
print("Queue is empty")
return -1
x = self._data[self._front]
self._data[self._front] = None
if self._n == 1:
self._front = self._rear = -1
elif self._front == self._size - 1:
self._front = 0
else:
self._front = self._front + 1
self._n -= 1
return x

def enqueue (self , el):


if CircularQ._size == self._n:
print("Queue is full , resizing now")

elif self._front == -1:


self._front = self._rear = 0
elif self._rear == self._size - 1:
self._rear = 0
else:
self._rear = self._rear + 1
self._data[self._rear] = el
self._n += 1

def printQueue(self):
print("Queue Content is :")
if self._front < self._rear:
print(self._data[self._front: self._rear + 1])
if self._front != 0 and self._rear < self._front:
print(self._data[self._front:] + self._data[0:self._rear + 1])

def Qresize(self, cap):


old = self._data
self._data = [None] * cap
walk = self._front
for k in range (self._n):
self._data[k] = old[walk]
walk = (1+ walk)%len(old)
self._front = 0
self._rear = self._n

def main():
q1 = CircularQ()
q1.enqueue(65)
q1.enqueue(90)
q1.enqueue(14)
print("No of elements in Queue: ", q1.lenQ())
q1.printQueue()
print("item being processed : ", q1.dequeue())
q1.printQueue()
q1.enqueue(76)
q1.enqueue(11)
q1.enqueue(83)
q1.printQueue()
print("item being processed : ", q1.dequeue())
q1.printQueue()
q1.enqueue(43)
q1.printQueue()
print("item being processed : ", q1.dequeue())
q1.printQueue()
print("item being processed : ", q1.dequeue())
q1.printQueue()
print("item being processed : ", q1.dequeue())
q1.printQueue()
print("item being processed : ", q1.dequeue())
q1.printQueue()
print("item being processed : ", q1.dequeue())
print("item being processed : ", q1.dequeue())

main()

You might also like