개요
stack 자료구조가 가지는 성질과 stl stack의 사용법을 정리해봤다.
Stack
Stack은 배열이나 연결리스트에서 마지막에 원소를 추가하거나 삭제, 접근할 수 있다는 제약조건이 들어간 자료구조이다.
처음들어간 원소가 제일 늦게 나온다는 의미의 "FILO" 자료구조라고 한다.
Stack의 성질은 다음과 같다.
- 원소 추가 O(1)
- 원소 제거 O(1)
- 상단 원소 확인 O(1)
- 상단이 아닌 나머지 원소들의 확인 변경 원칙적으로 불가능
구현
배열로 간단하게 구현할 수 있다.
필요한 요소는 원소를 삽입할 배열과 index를 저장할 top만 있으면 된다.
int stack[100];
int top = 0;
top은 원소가 삽입될 index를 가리키고 있다.
따라서
- push : stack[top] = data;
- pop : top--;
- top : stack[top-1]
로 쉽게 구현 가능하다.
STL stack
비어있을때 top(), pop()을 하면 런타임 에러
#include <stack>
#include <iostream>
using namespace std;
int main(){
stack<int> S;
//원소 삽입
S.push(10);
S.push(20);
S.push(30);
//stack 크기
cout << S.size() << "\n";
//비었는지 확인
if(S.empty()) cout << "stack is empty\n";
//원소 제거
S.pop();
//원소 확인
cout << S.top() << "\n";
}
Reference
https://cplusplus.com/reference/stack/stack/pop/
https://cplusplus.com/reference/stack/stack/pop/
Popping out elements... 4 3 2 1 0
cplusplus.com
'C++' 카테고리의 다른 글
[C++] regex로 정규 표현식 사용하기 (0) | 2025.01.06 |
---|---|
[C++] STL queue (0) | 2024.12.30 |
[C++] STL Map (1) | 2024.12.23 |
[C++]템플릿 사용 시 파일 분할 (0) | 2024.12.23 |
[C++] 템플릿의 특수화 (0) | 2024.12.23 |