공부/알고리즘 (c++)
Stack
원클릭쓰리버그
2022. 1. 15. 16:04
728x90
Stack은 후입선출이 가장 특징이며, 기존의 노드와 비교했을때, 어려운 점은 없다.
흔히 길 되돌아가기, 테잎 돌리기 처럼 기존의 것을 되돌릴때, 저장하고 사용하는데 쓰인다.

스택을 생성하고 스택에 Push 해줬을때, top()을 보면 가장 마지막에 쌓은 요소를 볼 수 있다.
그 상태에서 Pop()을 진행해주면 후입선출로 스택에 데이터가 사라지는걸 볼 수 있다.
template<typename T, typename Container = vector<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(); }
private:
//vector<T> _container;
//list<T> _container;
Container _container;
};
스택을 구현해 보았다. 예전에 구현했던 방법과 달라 좀 신기하긴 했지만 결국 만드는 방법만 다를 뿐 동작하는 논리는 같기 때문에 참고하였다. 확실히 코드 길이도 짧고.
재밌었던 부분에 대해 이야기해보자면 templete<typename Contanier = vector<T>> 인데, 결국 Stack에서 기능은 list, vecter 동일하게 쓸 수 있기에 편한 리스트를 붙여 사용을 하게 할 수 있다는 점이었다. 그 외는 쉬우니 패스