파이썬

[자료구조] 큐queue

묘 Myo 2022. 4. 17. 20:11

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