Stack ์คํ
Stack ์คํ
๐ซ ์ ์
ํ ์ชฝ ๋์์๋ง ์์๋ฅผ ๋ฃ๊ฑฐ๋(PUSH) ๋บ ์ ์๋(POP) ์๋ฃ๊ตฌ์กฐ
Like ํ๋ง๊ธ์ค ํต, ์๋ฆฌ๋ฒ ์ดํฐ, ์๋ฅ๋๋ฏธ
LIFO
Last in First out
Restricted Structure
ํน์ ์์น์์๋ง ์์๋ฅผ ๋ฃ๊ฑฐ๋ ๋บ ์ ์๋ ์ ํ๋ ์๋ฃ๊ตฌ์กฐ (์คํ, ํ, ๋ฑ)
๐ซ ์ฑ์ง
- ์์์ ์ถ๊ฐ : O(1)
- ์์ ์ ๊ฑฐ : O(1)
- ์ ์ผ ์๋จ์ ์์ ํ์ธ : O(1)
- ์ ์ผ ์๋จ์ด ์๋ ๋๋จธ์ง ์์๋ค์ ํ์ธ/๋ณ๊ฒฝ์ด ์์น์ ์ผ๋ก ๋ถ๊ฐ๋ฅ
๐ซ ๊ตฌํ ๋ฐ ์ฌ์ฉ
๐ซง ๋ฐฐ์ด์ ์ด์ฉํ ๊ตฌํ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int MAX = 100005;
int dat[MAX];
int pos = 0; // ๋ค์ ์์๊ฐ ์ถ๊ฐ๋ ๊ณณ, size : ์์์ ์
void push(int x)
{
dat[pos++] = x;
}
// ๊ตณ์ด dat[pos]๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์
// ๋ค์ ์ ๊ทผํ ์ผ๋ ์๊ณ , ๋์ค์ ์ ๊ฐ์ผ๋ก ๋ฎ์ด์์์ง
void pop()
{
pos--;
}
int top()
{
return dat[pos - 1];
}
๐ซง ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ๊ตฌํ
@ TODO
๐ซง C++ STL stack
1
2
3
4
// Declaration & Definition & Init
#include <stack>
stack<int> s;
1
2
3
4
5
6
// Use
s.push(10);
s.pop();
s.size();
s.empty();
s.top();
๐ซ ๋ฉ๋ชจ
- ์คํ์ ์ด์ฉํ ๋ฌธ์
- ์์์ ๊ดํธ ์
- ์ ์/์ค์/ํ์ ํ๊ธฐ๋ฒ (์ฝํ ์ ์๋์ด)
- DFS
- Flood Fill
- Call
Stack
ํธ์ถ์คํ
Stack
overflow
์ด ๊ธฐ์ฌ๋ ์ ์๊ถ์์ CC BY 4.0 ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฆ
๋๋ค.