Programming Languages/Python
[파이썬] 스택(Stack)과 큐(Queue)
minjiwoo
2022. 1. 6. 15:00
728x90
1. Stack 스택 자료구조
선입후출 (First In Last Out) 구조
stack = []
stack.append(1) # push 를 append()로 구현한다.
stack.append(2)
stack.append(3)
stack.pop()
stack.append(4)
print(stack) # 스택의 가장 밑에 있는 원소부터 출력
print(stack[::-1]) # 스택 가장 위에 있는 원소부터 출력
<결과>
[1, 2, 4]
[4, 2, 1]
파이썬에서 stack 자료구조를 구현하기 위해서는 이렇게 다른 라이브러리가 필요없이, list 구조에서 append()와 pop()으로 간단히 구현할 수 있다.
2. Queue 큐 자료구조
선입선출 (First In First Out) 구조 , 나중에 온 사람이 나중에 들어가는 공정한 자료구조
파이썬에서는 collections 모듈에서 제공하는 deque 자료구조를 활용하여 큐를 구현할 수 있다.
from collections import deque
queue = deque() # empty queue declaration
queue.append(1)
queue.append(2)
queue.append(3)
queue.append(4)
queue.popleft() # 맨 처음 큐에 들어온 1이 pop 된다 !
queue.append(100)
print(queue)
queue.reverse() # 순서를 거꾸로 바꿔준다.
print(queue)
<결과>
deque([2, 3, 4, 100])
deque([100, 4, 3, 2])
학교에서 C로 직접 스택과 큐를 구현할때보다 정말 파이썬은 몇줄이면 구현가능하니까...ㅋㅋㅋㅋㅋ 편하다 !
궁금해서 queue가 empty상태일 때에 popleft()를 하면 파이썬에서는 어떻게 되나 실험해봤다.
from collections import deque
queue = deque() # empty queue declaration
queue.append(1)
queue.append(2)
queue.append(3)
queue.popleft() # 맨 처음 큐에 들어온 1이 pop 된다 !
print(queue)
queue.popleft() # 2
print(queue)
queue.popleft() # 3
print(queue)
queue.popleft()
<결과: 컴파일 에러>
728x90