Skip to content

Commit 289ef47

Browse files
authored
Simple Queue in Linked list
1 parent e2276bd commit 289ef47

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
"""
2+
Implementing queue in linked list
3+
4+
self.front points to node which is next in line to be removed
5+
self.rear points to most recently entered node
6+
self.size counts queue entries
7+
self.maxSize is the maximum possible entries in queue
8+
9+
10+
"""
11+
12+
class Node:
13+
def __init__(self,item) -> None:
14+
self.item = item
15+
self.next = None
16+
17+
class Queue:
18+
def __init__(self,maxSize) -> None:
19+
self.front = None
20+
self.rear = None
21+
self.size = 0
22+
self.maxSize = maxSize
23+
24+
def isEmpty(self):
25+
return self.front == self.rear == None
26+
def isFull(self):
27+
return self.size == self.maxSize
28+
29+
def enqueue(self,data):
30+
newNode = Node(data)
31+
if not self.isFull():
32+
#Q is not Full yet
33+
if self.isEmpty():
34+
# First entry
35+
self.front = newNode
36+
else:
37+
# other entry exist
38+
lastNode = self.front
39+
while lastNode.next:
40+
lastNode = lastNode.next
41+
42+
lastNode.next = newNode
43+
44+
45+
self.rear = newNode
46+
self.size+=1
47+
else:
48+
print('Enqueue failed as Queue is full')
49+
return
50+
51+
def dequeue(self):
52+
if not self.isEmpty():
53+
#last node
54+
55+
self.front = self.front.next
56+
self.size -=1
57+
if self.front == None and self.size == 0:
58+
#removed last node, list empty
59+
self.rear = None
60+
else:
61+
print("Dequeue fail, Queue is empty")
62+
return
63+
64+
def print(self):
65+
size = self.size
66+
p = self.front
67+
flag = True
68+
while size>=0 and p:
69+
if flag:
70+
print("to be removed is:",p.item)
71+
flag=False
72+
else:
73+
print(p.item)
74+
p = p.next
75+
print("__________")
76+
return
77+
78+
79+
80+
81+
q = Queue(3)
82+
q.enqueue(1)
83+
q.enqueue(2)
84+
q.enqueue(3)
85+
q.print()
86+
q.dequeue()
87+
q.dequeue()
88+
q.dequeue()
89+
q.dequeue()
90+
q.print()

0 commit comments

Comments
 (0)