Skip to content

Commit 3ed77aa

Browse files
authored
Create Queue_Circular.py
1 parent 5384f44 commit 3ed77aa

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

Data_Structure/src/Queue_Circular.py

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
class Queue_Circular:
2+
3+
def __init__(self, Size=10):
4+
self.__size = Size+1
5+
self.__queue = [None]*(Size+1)
6+
self.__head = self.__tail = 0
7+
self.__i = -1
8+
9+
def isEmpty(self):
10+
return self.__head == self.__tail
11+
def isFull(self):
12+
return (self.__tail+1)%self.__size == self.__head
13+
14+
def EnQueue(self, value):
15+
if(self.isFull()): raise IndexError("Overflow Error - Queue is Full")
16+
self.__queue[self.__tail] = value
17+
self.__tail = (self.__tail+1)%self.__size
18+
19+
def DeQueue(self):
20+
if(self.isEmpty()): raise IndexError("Unerflow Error - Queue is Empty")
21+
self.__head = (self.__head+1)%self.__size
22+
return self.__queue[(self.__head-1)%self.__size]
23+
24+
def __len__(self):
25+
return self.__tail-self.__head if(self.__tail>=self.__head) else self.__size-self.__head+self.__tail
26+
27+
def __getitem__(self, index):
28+
if(0 <= index < len(self)):
29+
return self.__queue[(index+self.__head)%self.__size]
30+
else: raise IndexError("Index out of range")
31+
32+
def __next__(self):
33+
self.__i += 1
34+
if(self.__i < len(self)): return self.__getitem__(self.__i)
35+
else: raise StopIteration()
36+
37+
def __iter__(self):
38+
self.__i = -1
39+
return self
40+
41+
if __name__ == '__main__':
42+
print("\nCreate Circular Queue of size 5\n")
43+
Q1 = Queue_Circular(5)
44+
45+
for i in range(5, 30, 5):
46+
print("EnQueue (Insert) ", i)
47+
Q1.EnQueue(i)
48+
49+
print("\nPrint Queue")
50+
for i in Q1:
51+
print(i, end=", ")
52+
53+
print("\n\nEnQueue (Insert) 30")
54+
try: Q1.EnQueue(30)
55+
except IndexError: print("Queue is Full")
56+
57+
print("\nDeQueue (Delete), Deleted value = ", Q1.DeQueue())
58+
59+
print("\nEnQueue (Insert) 30")
60+
Q1.EnQueue(30)
61+
62+
print("\nPrint Queue")
63+
for i in Q1:
64+
print(i, end=", ")

0 commit comments

Comments
 (0)