먼저 들어간 데이터가 먼저 나오는 자료구조이다.

| 구분 | 정의 | 설명 |
|---|---|---|
| 연산 | boolean isFull() | 큐에 들어 있는 데이터 개수가 maxsize인지 확인해 boolean 값을 반환한다. |
| 연산 | boolean isEmpty() | 큐에 들어 있는 데이터가 하나도 없는지 확인해 boolean 값을 반환한다. |
| 연산 | void push(Item Type item) | 큐에 데이터를 푸시한다. |
| 연산 | ItemType pop() | 큐에서 처음에 푸시한 데이터를 팝하고, 그 데이터를 반환한다. |
| 상태 | int front | 큐에서 다음에 제거할 원소의 위치를 기록한다. |
| 상태 | int rear | 큐에서 최근에 푸시한 데이터의 위치를 기록한다. |
| 상태 | ItemType data[maxsize] | 큐의 데이터를 관리하는 배열이다. 최대 maxsize개의 데이터를 관리한다. |
queue = []
# 큐에 데이터 추가
queue.append(1)
queue.append(2)
queue.append(3)
# 큐의 맨 앞 데이터 제거
first_item = queue.pop(0)
print(first_item) # 1
# 큐에 데이터 추가
queue.append(4)
queue.append(5)
# 큐의 맨 앞 데이터 제거
first_item = queue.pop(0)
print(first_item) # 2
큐는 덱을 활용하는 것이 리스트로 활용하는 것보다 성능이 훨씬 우수하다.
from collections import deque
queue = deque()
# 큐에 데이터 추가
queue.append(1)
queue.append(2)
queue.append(3)
# 큐의 맨 앞 데이터 제거
first_item = queue.popleft()
print(first_item) # 1
# 큐에 데이터 추가
queue.append(4)
queue.append(5)
# 큐의 맨 앞 데이터 제거
first_item = queue.popleft()
print(first_item) # 2
pop(0)과 popleft()의 성능 비교하기from collections import deque
import time
lst = list(range(100000))
dq = deque(range(100000))
# pop(0) 성능 측정
start_time = time.time()
for i in range(100000):
lst.pop(0)
print("pop(0) 소요 시간: ", time.time() - start_time) # pop(0) 소요 시간: 0.5691769123077393
# popleft() 성능 측정
start_time = time.time()
for i in range(100000):
dq.popleft()
print("deque의 popleft() 소요 시간: ", time.time() - start_time) # deque의 popleft() 소요 시간: 0.0027320384979248047