반응형

 

 

스택(Stack)이란?

 

스택(Stack)은 데이터를 저장하기 위해 사용되는 연결 리스트와 유사한 간단한 데이터 구조입니다. 스택은 접시를 쌓는 것과 비슷하게 접시를 쌓은 후 맨 위의 접시부터 사용하며, 가장 처음 놓인 접시가 가장 마지막에 사용됩니다. 

  • 스택의 삽입과 삭제는 한쪽 끝(맨 뒤, top)에서 이루어진다.
  • 제일 마지막에 추가된 항목이 제일 먼저 삭제된다.
  • 후입 선출(LIFO) 혹은 선입 후출(FILO) 리스트라고 불린다.

스택의 자료구조

 

스택의 멤버 함수

  • s.top() : s에 가장 나중에 들어간 원소 리턴

  • s.push(x) : s의 맨 뒤에 x 원소 추가

  • s.pop() : s에 가장 나중에 들어간 원소 제거

  • s.size() : s의 사이즈(원소의 개수) 리턴

  • s.empty() : s의 사이즈(원소의 개수)가 0인지 아닌지 확인 (s가 비어있다면 1, 아니라면 0을 리턴)

 

 

예제 코드

#include<iostream>
#include<stack>
using namespace std;

int x;
stack<int> s;

int main() 
{
	s.push(1); // 1
	s.push(2); // 1 2
	s.push(3); // 1 2 3
	s.push(4); // 1 2 3 4
	s.push(5); // 1 2 3 4 5
	cout << "\n1~5까지 push 후\n";
	cout << "empty여부 : " << s.empty() << '\n';
	cout << "사이즈 : " << s.size() << '\n';
	cout << "top : " << s.top() << '\n';

	s.pop();   // 1 2 3 4
	s.pop();   // 1 2 3 
	s.pop();   // 1 2
	s.push(6); // 1 2 6
	cout << "\npop() 3번 후 push(6)\n";
	cout << "empty여부 : " << s.empty() << '\n';
	cout << "사이즈 : " << s.size() << '\n';
	cout << "top : " << s.top() << '\n';
}

 

실행결과

Stack의 경우 iterator가 존재하지 않으며 find함수를 사용할 수 없기 때문에 Verctor처럼 index를 통해 접근 혹은 탐색이 불가능하다는 점에 유의하세요.

반응형

+ Recent posts