-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLinkedCircularQueue.py
77 lines (63 loc) · 1.48 KB
/
LinkedCircularQueue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class Node:
def __init__(self):
self.data = None
self.link = None
class Queue:
def __init__(self):
front = None
rear = None
# Function to create Circular queue
def enQueue(q, value):
temp = Node()
temp.data = value
if (q.front == None):
q.front = temp
else:
q.rear.link = temp
q.rear = temp
q.rear.link = q.front
def deQueue(q):
if (q.front == None):
print("Queue is empty")
return -999999999999
# If this is the last node to be deleted
value = None # Value to be dequeued
if (q.front == q.rear):
value = q.front.data
q.front = None
q.rear = None
else: # There are more than one nodes
temp = q.front
value = temp.data
q.front = q.front.link
q.rear.link = q.front
return value
def displayQueue(q):
temp = q.front
print("Elements in Circular Queue are: ",
end = " ")
while (temp.link != q.front):
print(temp.data, end = " ")
temp = temp.link
print(temp.data)
# Driver Code
if __name__ == '__main__':
# Create a queue and initialize
# front and rear
q = Queue()
q.front = q.rear = None
# Inserting elements in Circular Queue
enQueue(q, 14)
enQueue(q, 22)
enQueue(q, 6)
# Display elements present in
# Circular Queue
displayQueue(q)
# Deleting elements from Circular Queue
print("Deleted value = ", deQueue(q))
print("Deleted value = ", deQueue(q))
# Remaining elements in Circular Queue
displayQueue(q)
enQueue(q, 9)
enQueue(q, 20)
displayQueue(q)