[자료구조] 스택(Stack) - 정의, 활용(C++)

이민석·2022년 6월 26일
0

자료구조

목록 보기
1/1
post-thumbnail

Stack이란?

LIFO(Last In First Out)의 구조로써 먼저 들어간 데이터가 가장 마지막에 나오게 되는 자료구조입니다. 아래 그림과 같이 데이터가 위에 쌓아진다는 개념으로 알면 이해가 쉽습니다.

Stack의 활용

알고리즘 문제에서의 활용은

역순 문자열 만들기

가장 나중에 입력된 문자부터 확인이 가능합니다.

괄호 짝 맞추기

괄호에 대해서 마지막에 온 괄호의 짝을 지속적으로 비교합니다.

위와 같은 문제에서 활용이 가능하고 알고리즘 문제풀이에서 더 자세히 다루도록 하겠습니다.

Stack의 연산

push(element) : 해당 stack의 top에 데이터 추가

stack.push(element);

pop() : 해당 stack의 top의 원소를 제거

stack.pop();

top() : 해당 stack의 top의 data를 반환

stack.top();
//int a = stack.top(); 반환된 데이터를 a에 할당

size() :해당 stack의 size를 반환

stack.size();
//int size = stack.size(); 

empty() : 해당 stack이 비어있는지 확인하여 bool값을 반환

stack().empty();
//예제  조건문에 활용하여서 스택이 비어있는지 판단
if(stack.empty()){
	cout << "Stack Emtpy" << endl;
    }

C++에서 Stack의 예제

stack을 사용하기위해서 stack헤더파일 추가

#include <stack>

stack선언 : stack <자료형> 변수이름;

stack<int> st;

활용 예제

#include <stack>
#include <iostream>
using namespace std;
int main() {
	//stack의 선언
	stack<int> st;
	for (int i = 1; i <= 10; i++) {
		st.push(i); //1부터 10까지 stack에 쌓기
	}
	while (!st.empty()) { //stack이 비어있을 때까지 반복문 실행
		cout << st.top() << " "; //top의 원소 출력
		st.pop(); //top원소 제거
	}
	return 0;
}

출력값

10 9 8 7 6 5 4 3 2 1

마치며

부족하거나 궁금하신 내용이 있다면 알려주시기 바랍니다!
문제 풀이와 같은 부분도 알려드리겠습니다.

참고 사이트

[C++ STL] https://cplusplus.com/reference/stack/stack/

profile
게임개발이 하고픈 이민석입니다.

0개의 댓글