1-6. 스택(Stack)

Crat3 ㅣ 2023. 7. 4. 14:33

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