본문 바로가기

Python 문법 정복하기

[Python] Queue (FIFO)

'큐'란 자료 구조는 "놀이기구"을 떠올리면 된다.

한 줄로 섰다가 한 줄로 나오는 놀이기구!

(데이터를 한쪽 끝으로 넣고, 반대쪽에서 빠져 나온다)

 

Swift 언어에서의 큐 의 예시도 함께 비교해 보자.


 

Queue

- 한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형 구조

 

 

놀이기구 특징:  First In First Out = FIFO

 

가장 처음에 줄을 선 사람이 가장 빨리 나온다.

가장 마지막에 선 사람은 가장 늦게 나온다.

 

먼저 해야 하는 일들을 저장하고 싶을 때나 먼저 들어온 일들을 순서대로 처리해야 할 때 큐를 사용한다.

 

 

test.python

def test_queue():
    queue = Queue()

    queue.push(1)
    queue.push(2)
    queue.push(3)
    queue.push(4)
    queue.push(5)

    assert queue.pop() == 1
    assert queue.pop() == 2
    assert queue.pop() == 3
    assert queue.pop() == 4
    assert queue.pop() == 5
    assert queue.pop() is None
    assert queue.is_empty()

 

 

structures.python 

class Queue:
    def __init__(self):
        self.front = None

    def push(self, value):
        if not self.front:
            self.front = Node(value)
            return

        node = self.front
        while node.next:
            node = node.next
        node.next = Node(value)

    def pop(self):
        if not self.front:
            return None

        node = self.front
        self.front = self.front.next
        return node.val

    def is_empty(self):
        return self.front is None

'Python 문법 정복하기' 카테고리의 다른 글

[Python] LinkedList 예제 (Palindrome)  (0) 2024.03.23
[Python] Queue 예제 (Josephus)  (0) 2024.03.23
[Python] Array & LinkedList  (1) 2024.03.23
[Python] Stack 예제  (0) 2024.03.16
[Python] Stack (LIFO)  (0) 2024.03.12