1. LIFO(Last In First Out) - 스택의 자료 구조
후입선출. 나중에 삽입된 데이터가 먼저 나간다.
2. 문법
(1) 데이터 삽입 ; push
int main()
{
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
(2) 가장 위에 있는 원소 추출 ; top, 데이터 삭제 ; pop
int data = s.top();
s.pop();
(3) 원소 개수 ; size
int size = s.size();
(4) 모든 데이터 추출하기 ; empty
while (s.empty() == false)
{
int data = s.top();
s.pop();
}
3. vector를 이용하여 Stack 구현 하기
template<typename T>
class Stack
{
public:
void push(const T& value)
{
_container.push_back(value);
}
void pop()
{
_container.pop_back();
}
T& top()
{
return _container.back();
}
bool empty() { return _container.empty(); }
int size() { return _container.size(); }
public:
vector<T> _container;
};
* 데이터 추출과 제거가 따로 있는 이유?
반환 할 때 데이터를 복사하는 과정이 생기므로 top으로 꺼내서 pop으로 제거하는 것이 더 빠르게 작동하기 때문이다.
'자료구조와 알고리즘' 카테고리의 다른 글
0-0. Big-O 표기법 (0) | 2023.06.26 |
---|