[c++] 스택 구현과 활용

C++에서 스택이란 후입선출(LIFO)을 따르는 자료 구조로, 데이터가 쌓이고(pop) 제거되는(push) 구조를 갖고 있습니다. 이러한 스택을 C++로 구현하고 활용하는 방법에 대해 알아보겠습니다.

C++에서의 스택 구현

#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;
    
    s.push(1);  // 스택에 데이터 추가
    s.push(2);
    s.push(3);
    
    std::cout << "스택의 맨 위: " << s.top() << std::endl; // 맨 위의 데이터 확인
    
    s.pop();    // 맨 위의 데이터 제거
    
    std::cout << "스택의 크기: " << s.size() << std::endl;   // 스택의 크기 확인
    
    return 0;
}

위 코드는 <stack> 헤더 파일을 사용하여 간단한 정수형 스택을 구현하고 활용하는 예시입니다. push() 함수를 사용하여 데이터를 스택에 추가하고, top() 함수를 통해 맨 위의 데이터를 확인하고, pop() 함수로 맨 위의 데이터를 제거할 수 있습니다.

C++에서의 스택 활용

C++의 스택은 자료구조나 알고리즘에서 유용하게 활용될 수 있습니다. 예를 들어, 재귀 알고리즘에서 호출된 함수의 정보를 저장하거나, 깊이 우선 탐색(DFS)을 수행할 때 방문한 노드 정보를 저장하는 용도 등으로 활용될 수 있습니다.

또한, C++의 STL(Standard Template Library)에서 제공하는 스택은 표준 라이브러리로 구현되어 있어, 편리하게 활용할 수 있습니다.

결론

C++에서의 스택은 후입선출 구조를 따르는 자료 구조로, <stack> 라이브러리를 활용하여 손쉽게 구현하고 활용할 수 있습니다. 이를 효율적으로 활용하여 알고리즘 및 자료구조 등 다양한 문제에 적용할 수 있으며, 표준 라이브러리를 활용하여 보다 안정적이고 효율적인 코드를 작성할 수 있습니다.

참고문헌: cplusplus.com - stack

이상으로 C++에서의 스택 구현과 활용에 대해 알아보았습니다.