반응형
오늘은 큐(Queue)에 대해서 알아보는 시간을 갖도록 하겠다.
Queue
(1) 정의
- 선입선출(First In First Out - FIFO)의 자료구조이다. Queue라는 단어 자체가 표 같은 것을 구매하기 위해 줄서는 것을 의미한다.
(2) 특징
- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조이다.
- FIFO(First In First out)로 스택과 꺼내는 순서가 반대이다..
- Enqueue() : 큐에서 데이터를 넣는 기능
- Dequeue() : 큐에서 데이터를 꺼내는 기능
(3) 활용
- 멀티 테스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용된다. (운영체제 참조)
- 큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해는게 좋다.
(4) 구현 - 파이썬
queue_list = list()
# enqueue method
def enqueue(data):
queue_list.append(data)
# dequeue method
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
for index in range(10):
enqueue(index)
print(queue_list)
dequeue() # 0
dequeue() # 1
print(queue_list)
Result
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7, 8, 9]
(5) 응용 구현
- 파이썬 Queue 라이브러리에는 다양한 큐를 제공한다.
- Queue : 가장 일반적인 규 자료 구조
- LifoQueue : 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
- PrioriyQueue : 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
① Queue
import queue
data_queue = queue.Queue()
data_queue.put("neymar")
data_queue.put(7)
data_queue.qsize() # 2
data_queue.get() # neymar
data_queue.qsize() # 1
data_queue.get() # 7
② LifoQueue - Last In First Out
import queue
data_queue = queue.LifoQueue()
data_queue.put("neymar")
data_queue.put(7)
data_queue.qsize() # 2
data_queue.get() # 7
③ PriorityQueue
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10, "messi"))
data_queue.put((5, 1))
data_queue.put((15, "ronaldo"))
data_queue.qsize() # 3
data_queue.get() # (5, 1)
data_queue.get() # (10, 'messi')
반응형
'컴퓨터 이론 > 자료구조 & 알고리즘' 카테고리의 다른 글
[자료구조] 힙(Heap)에 대해서 알아보자. (0) | 2021.10.28 |
---|---|
[자료구조] 트리(Tree)에 대해서 알아보자. (0) | 2021.10.28 |
[자료구조] 스택(Stack)에 대해서 알아보자. (0) | 2021.10.25 |
[자료구조] Linked List에 대해서 알아보자. (0) | 2021.10.21 |
[자료구조] Hash Table에 대해서 알아보자. (0) | 2021.10.20 |