본문 바로가기

자료구조

[자료구조] 큐 - 파이썬을 이용해 큐 구현하기

- 큐

: 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조

: FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식(스택과 순서가 반대)

 

: 여기서 큐에 원하는 블럭을 넣는 것이 Enqueue, 꺼내는(나가는) 것이 Dequeue

queue_list = list()

def enqueue(data):
    queue_list.append(data)
    
def dequeue():
    data = queue_list[0]
    del queue_list[0]
    return data

리스트를 통해 구현하면 이렇게 나온다.

Python 중 queue 라이브러리

  • Queue(): 가장 일반적인 큐 자료 구조
  • LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조
  • PriorityQueue(): 우선순위가 높은 순으로 데이터 출력되는 구조

 

1. Queue()

 

import queue

data_queue = queue.Queue()
data_queue.put("a")
data_queue.put(1)

data_queue.qsize() #2출력
data_queue.get() #1 출력
data_queue.get() #a 출력

 

2. LifoQueue()

 

import queue
data_queue = queue.LifoQueue()

data_queue.put("a")
data_queue.put(1)

data_queue.get() #1 출력

: Last in First out 이기 때문에 1이 먼저 출력됨을 확인할 수 있다.

 

3. PriorityQueue()

 

import queue
data_queue = queue.PriorityQueue()

data_queue.put((5, 1))
data_queue.put((1, "a"))
data_queue.put((3, "b"))

data_queue.get() # (1, 'a') 출력
data_queue.get() # (3, 'b') 출력

우선순위대로 출력됨을 확인할 수 있다.

위처럼 보이듯 (우선순위, 내용)의 형태를 보인다.

 

이렇게 queue에 대해 알아보았다.

 

큐는 멀티태스킹을 위한 process scheduling 방식을 구현하는 데에 많이 사용된다.

 

 

반응형

'자료구조' 카테고리의 다른 글

[자료구조]스택 - 파이썬으로 구현하기  (0) 2020.07.16