stack
은 쌓다, 더미
라는 사전적 정의를 가지고 있는 것처럼, 데이터를 쌓아 올리는 하나의 자료 구조이다. 가장 마지막에 들어간 데이터가 가장 처음으로 빠져나오는 LIFO(Last In First Out)
의 대표적인 구조이다.
C++ 표준 라이브러리 (STL : Standard Template Library)에 이미 stack
이 정의되어있어 이를 include하여 사용할 수 있다.
- LIFO 구조
- 인터럽트 처리, 수식의 계산, 서브루틴의 복귀번지 저장 등에 사용
- DFS(깊이 우선 탐색)에서 사용
- 재귀함수를 호출할 때 사용
stack
를 사용하기 위해서는 아래와 같이 header 파일을 include 해준다.
#include <stack>
기본적인 stack
의 선언 및 초기화는 아래와 같다.
// 기본적인 int형 stack 선언
stack<int> s;
.push
를 이용하여 stack
에 데이터를 삽입할 수 있다.
// stack.push(element);
s.push(1);
s.push(2);
s.push(3);
.pop
를 이용하여 stack
에 데이터를 제거할 수 있다.
// stack.pop();
s.pop();
stack
과 관련된 기타 mothod들은 아래와 같다.
// stack size 반환
s.size();
// stack이 비었는지 확인 (비어있으면 True, element가 존재하면 False)
s.empty();
// stack s1과 s2의 element를 서로 바꾸기
s1.swap(s2);