-
(5) Queue자료구조/기본 자료구조 2021. 4. 28. 16:03
■ Queue
1) 정의 :
First In First Out - FIFO 구조
> 들어가는 곳과 자료가 나오는 부분이 다른 구조
> array( 파이썬에서는 deque library써서 입출력 속도 높여서 사용 )
> queue는 mmutable이라 access 가능하면 변경시 다른 곳에서 참조해도 변경사항이 반영
추가 참조 : ledgku.tistory.com/54
2) 대표 활용 :
> Python GIL, Threading, Buffer 등에 활용
> 프로세스 scheduling( OS ) → 이때는 python기준 Queue 라이브러리, 큐 구조를 알고리즘에서 사용할 때는 deque
> Python 에서의 추가적인 정책의 queue
( list / collections - deque / queue ) 등의 library가 있음
- Queue(): 가장 일반적인 큐 자료 구조
- LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
- PriorityQueue(): 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
※ 내글 참조 :
korshika.tistory.com/12?category=950608
3) 코드
(1) Queue
> 가장 일반적인 큐 자료 구조
※ get / put으로 자료 조작
import queue data_queue = queue.Queue() # 일반적인 fifo 큐 data_queue.put("funcoding") data_queue.put(1) data_queue.qsize() # length 없음 >>> 2 data_queue.get() >>> 'funcoding'
(2) LifoQueue - 스택 구조와 동일
> 나중에 입력된 데이터가 먼저 출력되는 구조
(a) queue 라이브러리
import queue data_queue = queue.LifoQueue() # stack data_queue.put("funcoding") data_queue.put(1) data_queue.qsize() >>> 2 data_queue.get() >>> 'funcoding'
(b) collections-deque 라이브러리
import collections # append pop my_fifo = collections.deque() my_fifo.append(1) my_fifo.append(2) print(f'my_fifo : {my_fifo}') >>> my_fifo : deque([1, 2]) my_fifo.pop() >>> 2 my_fifo.popleft() >>> 2
(3) PriorityQueue
> tuple에 ( priority, value ) 로 put / get을 하는 것
import queue data_queue = queue.PriorityQueue() data_queue.put((10, "korea")) # 우선순위, data 순으로 tuple로! -> unchanged data_queue.put((5, 1)) data_queue.put((15, "china")) data_queue.qsize() >>> 3 data_queue.get() >>> (5, 1) data_queue.get() >>> (10, 'korea')
참조 :
gyoogle.dev/blog/computer-science/data-structure/Stack%20&%20Queue.html
반응형'자료구조 > 기본 자료구조' 카테고리의 다른 글
(4) Stack (0) 2021.04.28 (3) Array vs ArrayList vs LinkedList (0) 2021.04.28 (2) Linked list (0) 2021.04.28 (1) Array - 배열 (0) 2021.04.28