[Data Structure] Queue(큐)

황인용·2020년 3월 1일
0
post-custom-banner

Queue(큐)

  • Queue(큐)는 먼저 넣은 데이터를 먼저 반환하도록 설계된 메모리 구조

Queue의 특징

  • FIFO(First In First Out) : 가정 먼저 넣은 데이터를 가장 먼저 꺼내는 데이터 구조
  • Stack과는 반대되는 개념
  • 운영체제(OS)에서 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해서 많이 사용
  • double ended queue, priority queue 등도 있다
  • Python에서는 queue 라이브러리 또는 List로 구현

Queue의 주요 기능

  • Enqueue : 큐에 데이터를 넣는 기능
  • Dequeue : 큐에서 데이터를 꺼내는 기능

When to use Queue

  • 맛집 예약 시스템
  • OS 프로세스 스케쥴링 시스템 (priority queue 사용)

Queue의 구현 with Python

List를 사용한 Queue 예제

# queue list
queue_list = list()

def enqueue(data):
    queue_list.append(data)
    
def dequeue():
    data = queue_list[0]
    del queue_list[0]
    return data
# enqueue 10
for index in range(10):
	enqueue(index)
10
# dequeue
dequeue()
0
# print queue list
print(queue_list)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

queue()를 사용한 queue 예제

# import queue 라이브러리
import queue

data_queue = queue.Queue()
# enqueue .put()
data_queue.put("funcoding")
data_qeueu.put(1)
# dequeue
data.queue.get()
'funcoding'
# qsize()
data_queue.qsize()
1
# print data_queue
<queue.Queue object at 0x7ff2af73a220>

LifoQueue()를 사용한 queue 예제

# import queue 라이브러리
import queue

data_queue = queue.LifoQueue()
# enqueue
data_queue.put("funcoding")
data_queue.put(1)
# qsize()
data_queue.qsize()
2
# dequeue
data_queue.get()
1

PriorityQueue()를 사용한 queue 예제

# import queue 라이브러리
import queue

data_queue = queue.PriorityQueue()
# enqueue
data_queue.put((10, "korea"))
data_queue.put((5, 1))
data_queue.put((15, "china"))
# qsize()
data_queue.qsize()
3
# dequeue
data_queue.get()
(5, 1)
# dequeue
(10, 'korea')
profile
dev_pang의 pang.log
post-custom-banner

0개의 댓글