1. 큐의 구조
▸가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
▸줄을 서는 행위와 유사
▸FIFO (First-In, First-Out)
1-1 큐의 용어
▸Enqueue: 큐에 데이터를 넣는 기능
▸Dequeue: 큐에 데이터를 꺼내는 기능
(확인 : Visualgo)
1-2 파이썬 queue 라이브러리 활용해서 queue 자료구조 사용하기
▸Queue(): 가장 일반적인 큐 자료구조를 생성
▸LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조의 큐 자료구조를 생성(스택구조와 비슷)
▸PriorityQueue(): 데이터마다 우선순위를 넣어서 우선순위가 높은 순으로 데이터를 출력
▸프로그램을 작성할 때 프로그램에 따라 적합한 자료구조를 사용
# Queue()로 큐 만들기
import queue
data_queue = queue.Queue()
data_queue.put('Hello') #Enqueue
print(data_queue)
print(data_queue.qsize()) # 현재 요소가 몇 개 있는 리턴
print(data_queue.get()) #Dequeue
print(data_queue.qsize())
data_queue.put(10)
data_queue.put(True)
print(data_queue.qsize())
# queue안에 있는 요소를 출력
for i in range(data_queue.qsize()):
item=data_queue.get()
print(item)
1
Hello
0
2
10
True
#LifoQueue()로 큐 만들기
import queue
data_queue = queue.LifoQueue()
data_queue.put('Hello')
data_queue.put(10)
data_queue.put(True)
print(data_queue.qsize())
print(data_queue.get())
3
True
#PriorityQueue()로 큐 만들기
import queue
data_queue = queue.PriorityQueue()
data_queue.put((10, "김사과"))
data_queue.put((5, "반하나"))
data_queue.put((7, "오렌지"))
data_queue.put((8, "이메론"))
data_queue.put((2, "박체리"))
print(data_queue.qusize())
print(data_queue.get()) #키 값이 적을수로 우선순위가 높음
print(data_queue.get())
1-3 큐는 어디에 쓰일까?
▸멀티태스킹을 위한 프로세스 스케쥴링 방식을 구현할 때(운영체제)
▸푸시메세지 저장
⁜문제
리스트 변수로 큐를 다루는 enqueue, dequeue 기능을 구현해보자
queue_list = list()
def enqueue(data):
queue_list.append(data)
def dequeue():
data = queue_list[0]
del queue_list[0]
return data
print(len(queue_list)) #0
for index in range(10):
enqueue(index)
print(queue_list)
print(dequeue())
print(queue_list)
0
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0
[1, 2, 3, 4, 5, 6, 7, 8, 9]
'파이썬' 카테고리의 다른 글
[자료구조] 링크드 리스트 Linked List (0) | 2022.04.18 |
---|---|
[자료구조] 스택 stack (0) | 2022.04.17 |
[자료구조] 배열 array (0) | 2022.04.16 |
[자료구조] 자료구조와 알고리즘 (0) | 2022.04.16 |
[자료구조] 코랩이란? (0) | 2022.04.16 |