공부/알고리즘 (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 동일하게 쓸 수 있기에 편한 리스트를 붙여 사용을 하게 할 수 있다는 점이었다. 그 외는 쉬우니 패스

'공부 > 알고리즘 (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