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 동일하게 쓸 수 있기에 편한 리스트를 붙여 사용을 하게 할 수 있다는 점이었다. 그 외는 쉬우니 패스
'공부 > 알고리즘 (c++)' 카테고리의 다른 글
오른손 법칙 향상 - stack 대입 (0) | 2022.01.16 |
---|---|
Queue (0) | 2022.01.15 |
List (0) | 2022.01.11 |
오른손 법칙 과 Vector (0) | 2022.01.08 |
알고리즘 드가자 (0) | 2022.01.05 |