Skip to content

Commit 11422ab

Browse files
authored
Add files via upload
1 parent 74c7d85 commit 11422ab

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
"""
2+
Implementing circular Q in Linked list
3+
4+
"""
5+
class Node:
6+
def __init__(self,data) -> None:
7+
self.data = data
8+
self.next = None
9+
class cQueue:
10+
def __init__(self,maxSize) -> None:
11+
self.front = None
12+
self.rear = None
13+
self.maxsize = maxSize
14+
self.size =0
15+
16+
def isFull(self):
17+
return self.size == self.maxsize
18+
19+
def isEmpty(self):
20+
return self.front ==self.rear==None
21+
22+
def peek(self):
23+
return self.front.data
24+
25+
def print(self):
26+
p = self.rear
27+
if p == self.front:
28+
#single item
29+
print(p.data)
30+
else:
31+
while p.next != self.rear:
32+
print(p.data)
33+
p = p.next
34+
print(p.data)
35+
36+
def enqueue(self,data):
37+
if self.isFull():
38+
print("EnQ Fail, Full")
39+
else:
40+
newNode = Node(data)
41+
print("EnQ",data)
42+
if self.front == None:
43+
#first enQ
44+
self.front = self.rear = newNode
45+
# self.front.next = self.rear
46+
47+
48+
else:
49+
newNode.next = self.rear
50+
self.rear = newNode
51+
52+
self.front.next = newNode
53+
self.size +=1
54+
55+
return
56+
57+
def dequeue(self):
58+
if self.isEmpty():
59+
print("DeQ fail, Empty")
60+
else:
61+
print("DeQ",self.front.data)
62+
if self.front == self.rear:
63+
#one item
64+
self.front.data=None
65+
self.front = None
66+
self.rear = None
67+
else:
68+
p =self.rear
69+
while p.next != self.front:
70+
p = p.next
71+
self.front.data = None
72+
self.front = p
73+
p.next =self.rear
74+
self.size -=1
75+
76+
return
77+
78+
79+
80+
81+
c = cQueue(3)
82+
c.enqueue(1)
83+
c.enqueue(2)
84+
c.enqueue(3)
85+
c.enqueue(4)
86+
c.print()
87+
c.dequeue()
88+
c.print()
89+
c.enqueue(5)
90+
c.print()
91+
print("peek",c.peek())

0 commit comments

Comments
 (0)