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()

 

<결과: 컴파일 에러>

당연하지만 이렇게 empty deque이라고 컴파일 에러가 난다 !

728x90