큐 구조
- 줄을 서는 행위와 유사
- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
- 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에서 입장하는 것과 동일
- FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대
알아둘 용어
- Enqueue : 큐에 데이터를 넣는 기능
- Dequeue : 큐에 데이터를 꺼내는 기능
- Visualgo 사이트에서 시연해보며 이해하기
파이썬 queue 라이브러리 활용해서 큐 자료 구조 사용하기
- queue 라이브러리에는 다양한 큐 구조로 Queue(), LifoQueue(), PriotyQueue() 제공
- 프로그램을 작성할 때 프로그램에 따라 적합한 자료 구조를 사용
- Queue() : 가장 일반적인 큐 자료 구조
- LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
- PriorityQueue() : 데이터마다 우선순위를 넣어서, 우선수위가 높은 순으로 데이터 출력
Queue()로 큐 만들기 (가장 일반적인 큐, FIFO(First-In, First-Out))
import queue
data_queue = queue.Queue()
data_queue.put('hyeon_coding')
data_queue.put(1)
print(data_queue.qsize()) # 2
print(data_queue.get()) # hyeon_coding
print(data_queue.get()) # 1
LifoQueue()로 큐 만들기 (LIFO(Last-In First-Out))
import queue
data_queue = queue.LifoQueue()
data_queue.put('hyeon coding')
data_queue.put(1)
print(data_queue.qsize()) # 2
print(data_queue.get()) # 1
마지막에 넣은게 마지막의
어디에 큐가 많이 쓰일까?
- 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제 참조)