대표적인 데이터 구조4: 큐 (Queue)
1. 큐 구조
줄을 서는 행위와 유사
가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일
FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대
출처: http://www.stoimen.com/blog/2012/06/05/computer-algorithms-stack-and-queue-data-structure/
엑셀로 이해해보기
3.1. Queue()로 큐 만들기 (가장 일반적인 큐, FIFO(First-In, First-Out))
import queue
data_queue = queue.Queue()
data_queue.put("funcoding")
data_queue.put(1)
data_queue.qsize()
2
data_queue.get()
'funcoding'
data_queue.qsize()
0
data_queue.get()
1
3.2. LifoQueue()로 큐 만들기 (LIFO(Last-In, First-Out))
import queue
data_queue = queue.LifoQueue()
data_queue.put("funcoding")
data_queue.put(1)
data_queue.qsize()
2
data_queue.get()
1
3.3. PriorityQueue()로 큐 만들기
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10, "korea"))
data_queue.put((5, 1))
data_queue.put((15, "china"))
data_queue.qsize()
3
data_queue.get()
(5, 1)
data_queue.get()
(10, 'korea')
참고: 어디에 큐가 많이 쓰일까?
멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제 참조)
큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해해두는 것이 좋음
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
for index in range(10):
enqueue(index)
len(queue_list)
10
dequeue()
2