Stack(스택)
Stack은 삽입과 삭제 같은 쪽에서만 이루어지는 LIFO(Last In First Out)형식의 선형 자료구조이다.

스택은 쌓는다는 뜻이다.
Stack 주요 용어
| 주요 용어 | 설명 |
|---|---|
| Top | 삽입과 삭제가 일어나는 위치를 의미합니다. |
| Push | 스택의 맨 위(top)에 데이터를 추가하는 연산입니다. |
| Pop | 스택의 맨 위(top)에서 데이터를 삭제하고 반환하는 연산입니다. |
| Peek | 스택의 맨 위(top)에 있는 데이터를 제거하지 않고 반환하는 연산입니다. |
예시
stack = []
stack.append(10)
stack.append(20)
stack.append(30)
print(stack) # [10, 20, 30]
print(stack.pop()) # 30
print(stack) # [10, 20]Queue(큐)
큐는 한쪽(rear)에서 삽입이 이루어지고, 다른 한쪽(front)에서 삭제가 이루어지는 FIFO(First In First Out) 형식의 선형 자료구조이다.

큐는 대기줄이라는 것이다.
Queue 주요 용어
| 주요 용어 | 설명 |
|---|---|
| Enqueue | 큐의 맨 뒤(rear)에서 데이터를 추가하는 연산이다. |
| Dequeue | 큐의 맨 앞(front)에서 데이터를 꺼내는(삭제하는) 연산이다. |
| rear | 큐의 맨 뒤에 위치한 데이터를 가리키는 포인터이다. |
| front | 큐의 맨 앞에 위치한 데이터를 가리키는 포인터이다. |
예시
from collections import deque
queue = deque()
queue.append(10)
queue.append(20)
queue.append(30)
print(queue) # deque([10, 20, 30])
queue.popleft()
print(queue) # deque([20, 30])
queue.popleft()
print(queue) # deque([30])
Deque(덱)
Deque는 Stack과 Queue와 달리 양쪽 끝에서 삽입과 삭제가 가능한 자료구조를 의미한다.
그래서 Stack, Queue 연산을 모두 지원한다.
주요 용어
| 주요 용어 | 설명 |
|---|---|
| append(x) | 덱의 맨 뒤에 데이터를 추가한다. |
| appendleft(x) | 덱의 맨 앞에 데이터를 추가한다. |
| pop() | 덱의 맨 뒤에서 데이터를 제거하고 반환한다. |
| popleft() | 덱의 맨 앞에서 데이터를 제거하고 반환한다. |
예시
from collections import deque
dq = deque()
dq.append(10)
dq.append(20)
dq.appendleft(5)
print(dq) # deque([5, 10, 20])
dq.pop()
dq.popleft()
print(dq) # deque([10])