summaryrefslogtreecommitdiff
path: root/queue_array.py
blob: 4356b4dd74fa5d53f7834eedc2c13f3e7c8dc591 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class Queue:
    def __init__(self, size=7):
        self.size = size+1
        self.queue = [0]*self.size
        self.write = 0
        self.read = 0

    def full(self):
        return ((self.write+1)%self.size) == ((self.read)%self.size)

    def empty(self):
        return self.write == self.read
    
    def enqueue(self, value):
        """
        Will add item to queue without overflowing
        """
        if (self.full()):
            return
        
        self.queue[self.write] = value
        self.write += 1

        if (self.write == self.size):
            self.write = 0

    def dequeue(self):
        if (self.empty()):
            return None
        
        val = self.queue[self.read]
        self.read += 1

        if (self.read == self.size):
            self.read = 0
        
        return val


if __name__ == "__main__":
    que = Queue()
    que.enqueue(1)
    que.enqueue(2)
    que.enqueue(3)
    print(que.dequeue())
    que.enqueue(4)
    que.enqueue(5)
    print(que.dequeue())
    que.enqueue(6)
    que.enqueue(7)
    print(que.dequeue())
    que.enqueue(7)
    print(que.queue)