File tree 1 file changed +90
-0
lines changed
queue/linked-list-implementation
1 file changed +90
-0
lines changed Original file line number Diff line number Diff line change
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 ()
You can’t perform that action at this time.
0 commit comments