Skip to content

Commit 55c3141

Browse files
Queue implementation in array
1 parent 9d56a8d commit 55c3141

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

implement_queue_array.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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+

0 commit comments

Comments
 (0)