스택 개념
"먼저 들어온 게 제일 나중에 나간다."
개념을 이해하기 위해 상황이 담긴 이미지로 생각해봤으면 좋겠다 싶어 상황을 설명하고자 한다.
< 상 황 >
1. (책을 담을 상자 1개(밑에는 막혀 있으며, 위에는 열려 있는 구조)
2. (1번 책, 2번 책, 3번 책, 4번 책, 5번 책)
1,2번이 준비돼 있는 상황에서 1번~5번의 책을 상자에 우선적으로 담으려고 한다. 숫자 번호의 오름차순 순으로 올리고 싶다. 쌓을 땐 1번, 2번, 3번, 4번, 5번 순서로 책을 넣으면 될 것이다.
책을 뺄 때는?
쌓았던 순서의 역 순서인 5번의 책부터 빼고 4번 책을 빼면 될 것이다. "제일 처음에 넣었던 것을 마지막에 빼고, 제일 나중에 넣었던 걸 제일 처음으로 빼 나간다"
이것이 바로 스택의 개념이다.
하나의 말로 개념을 이해하는 것보다, 일단 이와 비슷한 사례를 보고 이해하는 게 제일 편하다.
자 이제 위의 상황을 바탕으로 코드를 통해 이해해보도록 하겠다. 아래 소스는 스택에 필요한 개념뿐만 아니라 스택에 있는 함수들을 이해하는데 좋은 코드들도 섞어 놓았다.
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include <iostream>
#include <stack>
using namespace std;
int main(){
stack<int> s;
// push
s.push(1);
s.push(2);
s.push(3);
s.push(4);
s.push(5);
// top
cout << "top element : " << s.top() << '\n';
// pop
s.pop(); // 5가 삭제
s.pop(); // 4가 삭제
// size
cout << "stack's size : " << s.size() << '\n';
// empty
cout << "does stack empty? : " << (s.empty()?"Yes":"No")<<'\n';
// remain element
while(!s.empty()){
cout << "remain element :" << s.top() <<'\n';
s.pop();
}
return 0;
}
|
cs |
스택 기본 함수
추가 및 삭제
1. push() : top에 원소를 추가
2. pop() : top에 있는 원소를 삭제
조회
top() : top에서 가장 끝에 있는 원소를 반환
기타
1. empty() : 스택이 비어있으면 true 아니면 false를 반환
2. size() : 스택 사이즈를 반환
'● 백준 > 스택·큐' 카테고리의 다른 글
[큐 개념] 큐(Queue)란?(C++ STL) (0) | 2020.07.01 |
---|
댓글