자료구조 01 - 스택(stack)과 큐(que)
Intro
이 글은 자료구조 중에서 스택(stack) 구조에 대해서 다룹니다.
스택(stack)
자료구조란 ‘데이터를 표현하고 관리하고 처리하기 위한 구조’를 의미하는데, 그 중에서 스택은 자료구조의 기초 개념이다.
스택을 구성하는 핵심적인 함수 두가지는 바로 삽입(push)과 삭제(pop)이다.
스택은 박스쌓기와 비슷하다. 박스를 아래에서부터 위로 쌓는 것처럼, 스택 구조에서는 아래에 있는 박스를 치우기 위해서 위에 있는 박스부터 치워야 한다. 이러한 구조를 FILO(선입후출), LIFO(후입선출)이라 한다.
이러한 스택의 구조를 파이썬으로 표현하면 다음과 같다.
파이썬 코드
stack = []
# 5삽입 - 2삽입 - 3삽입 - 7삽입 - 삭제 - 1삽입 - 4삽입 - 삭제
stack.append(5)
stack.append(2)
stack.append(3)
stack.append(7)
stack.pop()
stack.append(1)
stack.append(4)
stack.pop()
print(stack) #최하단 원소부터 출력
print(stack[::1]) #최상단 원소부터 출력
큐(que)
큐도 자료구조의 기초 개념이라 할 수 있는데, 큐 역시 삽입(push)과 삭제(pop)라는 기본적인 함수로 구성되어 있다.
큐는 놀이공원의 대기줄에 비유할 수 있다. 우리가 줄을 설 때 먼저 줄 선 사람이 먼저 입장하고 나중에 줄 선 사람이 나중에 입장하는 것처럼, 먼저 들어온 것이 먼저 나가는 FIFO(선입선출)구조를 가지고 있다.
파이썬 코드
from collections import deque
queue = deque() # 큐 구현을 위한 deque() 라이브러리 사용
# 5삽입 - 2삽입 - 3삽입 - 7삽입 - 삭제 - 1삽입 - 4삽입 - 삭제
queue.append(5)
queue.append(2)
queue.append(3)
queue.append(7)
queue.popleft()
queue.append(1)
queue.append(4)
queue.popleft()
print(queue)
queue.reserve()
print(queue)