전체/자료구조

파이썬으로 큐 구현하기

effortDev 2020. 6. 8. 14:25


큐는 줄을 서는 행위와 유사하다.

가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조이다.


매표소에서 티켓을 구매할때 가장 먼저 줄을 선 사람이  먼저 티켓을 살수 있는 것이다.

FIFO (First In First Out) 정책을 사용한다.




1. 내장함수 큐를 사용하여 구현하기



1
2
3
4
5
6
7
8
9
10
11
12
# 내장 함수 queue를 사용하여 구현
import queue
 
= queue.Queue()
 
q.put("a")
q.put("b")
q.put("c")
 
q.qsize()    # 3
q.get()      # 'a'
q.qsize()    # 2
cs



맨 처음에 들어간 데이터가 먼저 나온다.





2. LifoQueue()로 큐 만들기



1
2
3
4
5
6
7
8
9
10
11
# 내장 함수 queue를 사용하여 
# Last in First Out Queue 구현하기
 
import queue
 
q= queue.LifoQueue()
q.put("a")
q.put("b")
 
q.qsize()   #  2
q.get()     # 'b'
cs


마지막에 넣은 데이터가 가장 먼저 나온다.




3. PriorityQueue()로 큐 만들기



1
2
3
4
5
6
7
8
9
# 우선순위가 높은 큐가 먼저 나온다.
import queue
 
= queue.PriorityQueue()
q.put((10"a"))
q.put((5"b"))
q.put((15"c"))
q.qsize()    # 3
q.get()      # (5, 'b')
cs



우선순위가 높은 큐가 먼저 나온다.




4. enqueue, dequeue 구현하기



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 내장함수 사용하지 않고 
# enqueue, dequeue 구현하기
 
q_list = list()
 
def enqueue(data):
    q_list.append(data)
 
def dequeue():
    data = q_list[0]
    del q_list[0]
    return data
 
for i in range(10):
    enqueue(i)
 
print(q_list)     # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
dequeue()         # 0
print(q_list)     # [1, 2, 3, 4, 5, 6, 7, 8, 9]
enqueue(11)       # 11
print(q_list)     # [1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
cs