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