반응형
대표적인 데이터 구조 : 큐(Queue)
1) 큐 구조
가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조로, 줄을 서는 행위와 유사함
- 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일
- FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대
2) 알아둘 용어
Enqueue : 큐에 데이터를 넣는 기능
Dequeue : 큐에서 데이터를 꺼내는 기능
※참고※
3) 파이썬 queue 라이브러리 활용해서 큐 자료구조 활용하기
-queue 라이브러리에는 다양한 큐 구조로 Queue(), LifoQueue(), PriorityQueue() 제공
-프로그램을 작성할 때 프로그램에 따라 적합한 자료구조를 사용
- Queue() : 가장 일반적인 큐 자료구조
- LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조(스택 구조)
- PriorityQueue() : 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
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()
data_queue.get()
data_queue.qsize()
data_queue.get()
2
'funcoding'
1
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()
data_queue.get()
2
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()
data_queue.get()
data_queue.get()
3
(5, 1)
(10, 'korea')
※참고※
어디에 큐가 많이 쓰일까?
멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현하기 위해 많이 사용됨(운영체제 참조)
- 큐의 경우에는 장단점보다는 (특별히 장단점이 없음), 큐의 활용 예로 프로세스 스케줄링 방식을 함께 이해해두는 것이 좋음
4) 리스트 변수로 큐 구현하기
리스트 변수로 큐를 다루는 enqueue, dequeue 기능 구현해보기
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
출처 : 제로베이스
반응형
'CS > 자료구조' 카테고리의 다른 글
[Python] 해쉬 테이블(Hash Table) (0) | 2021.10.28 |
---|---|
[Python] 시간복잡도-알고리즘 복잡도 표현 방법 (0) | 2021.10.26 |
[Python] 링크드 리스트(Linked List) (0) | 2021.10.26 |
[Python] 스택(Stack) (0) | 2021.10.25 |
[Python] 배열 (0) | 2021.10.25 |