summaryrefslogtreecommitdiff
path: root/queue_array.py
diff options
context:
space:
mode:
Diffstat (limited to 'queue_array.py')
-rw-r--r--queue_array.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/queue_array.py b/queue_array.py
new file mode 100644
index 0000000..4356b4d
--- /dev/null
+++ b/queue_array.py
@@ -0,0 +1,53 @@
1class Queue:
2 def __init__(self, size=7):
3 self.size = size+1
4 self.queue = [0]*self.size
5 self.write = 0
6 self.read = 0
7
8 def full(self):
9 return ((self.write+1)%self.size) == ((self.read)%self.size)
10
11 def empty(self):
12 return self.write == self.read
13
14 def enqueue(self, value):
15 """
16 Will add item to queue without overflowing
17 """
18 if (self.full()):
19 return
20
21 self.queue[self.write] = value
22 self.write += 1
23
24 if (self.write == self.size):
25 self.write = 0
26
27 def dequeue(self):
28 if (self.empty()):
29 return None
30
31 val = self.queue[self.read]
32 self.read += 1
33
34 if (self.read == self.size):
35 self.read = 0
36
37 return val
38
39
40if __name__ == "__main__":
41 que = Queue()
42 que.enqueue(1)
43 que.enqueue(2)
44 que.enqueue(3)
45 print(que.dequeue())
46 que.enqueue(4)
47 que.enqueue(5)
48 print(que.dequeue())
49 que.enqueue(6)
50 que.enqueue(7)
51 print(que.dequeue())
52 que.enqueue(7)
53 print(que.queue)