안녕하세요, 여행벌입니다.

오늘은 자료구조 '스택' 과 C++ STL 스택 라이브러리를 이용하는 방법에 대해 다뤄보겠습니다.


1. 스택(Stack)

스택은 LIFO( Last In First Out ) 형식의 자료 구조로, 한쪽 끝에서만 자료를 넣고 뺄 수 있습니다.

즉, 마지막에 들어온 원소가 제일 먼저 나갈 수 있는 자료 구조입니다.

위의 그림과 같이, 스택의 Top 부분에서만 Push 와 Pop이 이뤄질 수 있습니다.

 

2. C++ STL 스택 라이브러리 기본 명령어

선언
- stack<자료형> 변수명 : 선언한 자료형 변수들을 담는 Stack을 선언.
ex) stack<int> s : int형 변수들을 담는 s라는 이름의 stack을 선언.

추가 및 삭제
- push(element) : top에 원소를 추가
- pop() : top에 있는 원소를 삭제

서칭
- top() : top(스택의 처음이 아닌 가장 끝)에 있는 원소를 반환

기타
- empty() : 스택이 비어있으면 true 아니면 false를 반환
- size() : 스택 사이즈를 반환

더 많은 함수들이 있지만, 위의 기본 명령어들만 잘 익히면 충분히 자료구조 Stack을 활용할 수 있습니다.

그럼 다음 예제를 통해 더 공부해볼까요?

#include<iostream>
#include<stack>

using namespace std;


int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0);

	stack<int> s; // int 형은 담는 s라는 이름의 stack 선언
	for (int i = 1; i <= 10; i++)
		s.push(i); // 1 ~ 10 까지 stack 에 담는다.
	for (int i = 1; i <= 10; i++) {
		cout << "현재 stack의 top : " << s.top() << '\n';
		s.pop();
	}
}

1 부터 10까지 차례대로 Stack에 담고 Pop 을 10번 시행해보겠습니다.

10(Top)

9

8

7

6

5

4

3

2

1

위의 그림과 같이 스택의 아래에서부터 Top까지 1 ~ 10 이 Push 되고, 이를 차례대로 Pop 한다면,

현재 stack의 top : 10
현재 stack의 top : 9
현재 stack의 top : 8
현재 stack의 top : 7
현재 stack의 top : 6
현재 stack의 top : 5
현재 stack의 top : 4
현재 stack의 top : 3
현재 stack의 top : 2
현재 stack의 top : 1

다음과 같이 출력될 것입니다!


오늘은 여기서 포스팅을 마치도록 하겠습니다.

자료구조 스택에 대한 기본적인 설명과 C++ STL Stack Library 기본 명령어를 정리해보았습니다.

 

+ Recent posts