소란한 블로그
Data Structures 02. 큐 (Queue) 본문
큐 (Queue)
: 가장 먼저 넣은 데이터를 가장 먼저 꺼내도록 하는 데이터 구조
- FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식
- 스택(stack)과 꺼내는 순서가 반대
+) Visualog
Terminologies
- Enqueue : 큐에 데이터를 넣는 기능
- Dequeue : 큐에서 데이터를 꺼내는 기능
Python Queue Library
- Queue()
: 가장 일반적인 큐 자료 구조 (FIFO) - LifoQueue()
: 나중에 입력된 데이터가 먼저 출력되는 구조 (LIFO) ➔ 스택 구조 - PriorityQueue()
: 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
01. Queue()
import queue
# queue 선언
data_queue = queue.Queue()
# 데이터 삽입
data_queue.put("apple")
data_queue.put(1)
# 데이터 사이즈 확인
print(data_queue.qsize())
# 데이터 꺼내기 : 가장 먼저 들어간 데이터부터 순서대로 나옴
print('첫번째 데이터: ', data_queue.get())
print('두번째 데이터: ', data_queue.get())
print(data_queue.qsize())
--- 출력 결과 ---
2
첫번째 데이터: string
두번째 데이터: 1
0
02. LifoQueue()
: 변형된 정책을 사용 ➔ LIFO ➔ 가장 마지막에 넣은것이 가장 마지막에 나옴 (like a stack)
import queue # queue 선언 data_queue = queue.LifoQueue() # 데이터 삽입 data_queue.put("apple") data_queue.put(1) # 데이터 사이즈 확인 data_queue.qsize() # 데이터 꺼내기 data_queue.get()03. PriorityQueue()
: 각 데이터에 우선순위를 부여 ➔ tuple 사용
: 우선순위가 높은 순서대로 나옴 ➔ 데이터를 삽입하는 순서와 상관 없음
import queue
# queue 선언
data_queue = queue.LifoQueue()
# 데이터 삽입
data_queue.put("apple")
data_queue.put(1)
# 데이터 사이즈 확인
data_queue.qsize()
# 데이터 꺼내기
data_queue.get()
--- 출력 결과 ---
(1, 'Lemon')
(3, 2)
How is would used?
: 운영체제에서 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용
+) 내용 추가, 이해 필요
Implementation Queue(FIFO) Using List
# list를 이용하여 queue 구현
data_list = []
def enqueue(data): # .put()
data_list.append(data)
def dequeue(): # .get()
data = data_list[0]
del data_list[0]
return data
# 데이터 생성
for index in range(10):
enqueue(index)
print('data_list의 길이: ', len(data_list)) # .qsize()
print()
# 데이터 출력
print('현재 data_list: ')
for a in data_list:
print(a)
print()
print('꺼낸 데이터: ', dequeue()) # 데이터 꺼내기
print()
print('현재 데이터 리스트: ', data_list)
--- 출력 결과 ---
data_list의 길이: 10
현재 data_list:
0
1
2
3
4
5
6
7
8
9
꺼낸 데이터: 0
현재 데이터 리스트: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Implementation Queue(LIFO) Using List
Implementation Priority Queue Using List
.
.
.
2020년 8월 27일 from my velog
'Computer Engineering > Data Structures' 카테고리의 다른 글
Data Structures 03. 스택 (Stack) (0) | 2020.12.29 |
---|---|
Data Structures 01. 배열 (Array) (0) | 2020.12.29 |