File tree Expand file tree Collapse file tree 1 file changed +64
-0
lines changed Expand file tree Collapse file tree 1 file changed +64
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Queue :
2
+ def __init__ (self , initial_size = 10 ):
3
+ self .arr = [0 for _ in range (initial_size )]
4
+ self .front_index = - 1
5
+ self .next_index = 0
6
+ self .queue_size = 0
7
+ def size (self ):
8
+ return self .queue_size
9
+ def is_empty (self ):
10
+ return self .queue_size == 0
11
+ def enqueue (self , value ):
12
+ if self .queue_size == len (self .arr ):
13
+ self .handle_capacity ()
14
+ self .arr [self .next_index ] = value
15
+ self .queue_size += 1
16
+ if self .front_index == - 1 :
17
+ self .front_index = 0
18
+ self .next_index = (self .next_index + 1 ) % len (self .arr )
19
+ def dequeue (self ):
20
+ if self .queue_size == 0 :
21
+ self .next_index = 0
22
+ self .front_index = - 1
23
+ return None
24
+ value = self .arr [self .front_index ]
25
+ self .queue_size -= 1
26
+ self .front_index = (self .front_index + 1 )% len (self .arr )
27
+ return value
28
+ def handle_capacity (self ):
29
+ old_arr = self .arr
30
+ self .arr = [0 for _ in range (2 * len (self .arr ))]
31
+ index = 0
32
+ for i in range (self .front_index , len (self .arr )):
33
+ self .arr [index ] = old_arr [i ]
34
+ index += 1
35
+ for i in range (0 , self .front_index ):
36
+ self .arr [index ] = old_arr [i ]
37
+ index += 1
38
+ self .front_index = 0
39
+ self .next_index = index
40
+
41
+ q = Queue ()
42
+ q .enqueue (1 )
43
+ q .enqueue (2 )
44
+ q .enqueue (3 )
45
+
46
+ # Test size
47
+ print ("Pass" if (q .size () == 3 ) else "Fail" )
48
+
49
+ # Test dequeue
50
+ print ("Pass" if (q .dequeue () == 1 ) else "Fail" )
51
+
52
+ # Test enqueue
53
+ q .enqueue (4 )
54
+ print ("Pass" if (q .dequeue () == 2 ) else "Fail" )
55
+ print ("Pass" if (q .dequeue () == 3 ) else "Fail" )
56
+ print ("Pass" if (q .dequeue () == 4 ) else "Fail" )
57
+ q .enqueue (5 )
58
+ print ("Pass" if (q .size () == 1 ) else "Fail" )
59
+
60
+
61
+
62
+
63
+
64
+
You can’t perform that action at this time.
0 commit comments