Scribbling

Implementing Circular Queue with Python 본문

Computer Science/Python

Implementing Circular Queue with Python

focalpoint 2022. 11. 24. 06:18

 

class Queue:
    def __init__(self, size):
        self.size = size
        self.q = [0] * size
        self.cnt = 0
        self.head, self.tail = 0, 0

    def append(self, val):
        if self.cnt == self.size:
            print('Full Queue Error')
            return False
        self.cnt += 1
        self.q[self.tail] = val
        self.tail += 1
        if self.tail == self.size:
            self.tail = 0
        return True

    def popleft(self):
        if self.cnt == 0:
            print('Empty Queue Error')
            return False
        self.cnt -= 1
        ret = self.q[self.head]
        self.head += 1
        if self.head == self.size:
            self.head = 0
        return ret

    def __repr__(self):
        ret = '['
        if self.cnt > 0:
            if self.head < self.tail:
                for i in range(self.head, self.tail):
                    ret += str(self.q[i]) + ', '
            else:
                for i in range(self.head, self.size):
                    ret += str(self.q[i]) + ', '
                for i in range(self.tail):
                    ret += str(self.q[i]) + ', '
            ret = ret[:-2]
        ret += ']'
        return ret