본문 바로가기

프로그래밍/CS 이론

Circular Queue in Python

global SIZE

class Q:

    def __init__(self, front, rear):
        self.queue = [None] * SIZE
        self.front = front
        self.rear = rear

    def isQueueFull(self):
        if self.queue[self.circulate(self.rear)] != None:
            return True
        else:
            return False

    def enQueue(self, data):
        if self.isQueueFull():
            print("Queue is Full ...")
        else:
            self.rear = self.circulate(self.rear)
            self.queue[self.rear] = data

    def isQueueEmpty(self):
        if self.queue[self.circulate(self.front)] == None:
            return True
        else:
            return False

    def deQueue(self):
        if self.isQueueEmpty():
            print("Queue is Empty ...")
        else:
            self.front = self.circulate(self.front)
            data = self.queue[self.front]
            self.queue[self.front] = None
            print("dequeued " + str(data))

    def circulate(self, point):
        if point == SIZE - 1:
            return 0
        else:
            point += 1
            return point


print("=================================================")
SIZE = int(input("큐의 크기를 입력하세요: "))
q = Q(0, 0)
print("명령어를 입력하세요. (en, de, full, empty, quit)") 
print("=================================================")

while 1:
    print("* 현재 배열: " + str(list(q.queue)))
    order = input("> ")
    if order == 'en':
        q.enQueue(input("넣을 숫자를 입력하세요: "))
        continue
    elif order == 'de':
        q.deQueue()
        continue
    elif order == 'full':
        if q.isQueueFull():
            print(True)
        else:
            print(False)
    elif order == 'empty':
        if q.isQueueEmpty():
            print(True)
        else:
            print(False)
    elif order == 'quit':
        break
    else:
        print("명령어를 바르게 입력하세요.")

'프로그래밍 > CS 이론' 카테고리의 다른 글

메서드 vs 클래스  (1) 2024.07.24
Example using Stack in Python  (0) 2022.03.19