자료구조 알고리즘

자료구조 알고리즘 Queue 큐란 무엇인가?

5kiran 2022. 11. 26.
반응형

Queue 큐란 무엇인가?

한쪽 끝으로 자료를 넣고, 반대쪽에서는 자료를 뺄 수 있는 선형 구조.(선입선출/FIFO(First in First out))

큐도 스택과 마찬가지로 일상생활에 접목해 보면 쉽게 이해할 수 있습니다.

일상생활 속 맛집을 갔을 때

온라인에서 티켓을 구매할 때

저희는 줄을 섭니다.

아래와 같이 먼저 온 사람이 먼저 대기열을 빠져나가게 됩니다

이과 같은 자료구조를 Queue라고 합니다

자료구조 알고리즘 Queue 큐란 무엇인가? - Queue 큐란 무엇인가?자료구조 알고리즘 Queue 큐란 무엇인가? - Queue 큐란 무엇인가?

 

LinkedList 의 Queue

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None


class Queue:
    def __init__(self):
        self.head = None
        self.tail = None

    def enqueue(self, value):
        new_node = Node(value)
        if self.is_empty():
            self.head = new_node
            self.tail = new_node
            return

        self.tail.next = new_node
        self.tail = new_node

    def dequeue(self):
        if self.is_empty():
            return "Queue가 업습니다"
        del_node = self.head
        self.head = self.head.next

        return del_node.data

    def peek(self):
        if self.is_empty():
            return "Queue가 없습니다"
        return self.head.data

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

queue = Queue()
queue.enqueue(1)  ## queue에 1의 값을 넣어줌
print(queue.peek()) ## 1
queue.enqueue(2) ## queue에 2의 값을 넣어줌
print(queue.peek()) ## 1 // 현재 queue에 1과 2가 있지만 1을 출력함 dequeue를 했을 때 빠져나갈 값 즉 가장 먼저 들어온 값
queue.enqueue(3)
print(queue.peek()) ## 1 // 마찬가지로 1이 출력됨
print(queue.dequeue()) ## 1 // queue를 빠져나간 값이 출력됨
print(queue.peek()) ## 2 // 1이 빠져나갔기 때문에 2가 출력됨
반응형

댓글