c++/ 자료구조&알고리즘 개념 복습하기 - 4 / 스택

한창희·2022년 1월 16일
0
post-custom-banner

< 스택 >


  • 마지막에 들어간 원소가 가장 먼저 나오는 자료구조 = LIFO
    Last In First Out


< 스택의 성질 >

  • 원소의 추가 = O(1)
  • 원소의 제거 = O(1)
  • 스택 최상단의 원소 확인 = O(1)
  • 최상단이 아닌 원소들의 확인/변경이 원칙적으로 불가능


< STL stack>

#include <bits/stdc++.h>
using namespace std;

int main(void) {
  stack<int> S;
  S.push(10); // 10
  S.push(20); // 10 20
  S.push(30); // 10 20 30 (현재 스택 최상단 = 30)
  cout << S.size() << '\n'; // 3
  
  if(S.empty()) cout << "S is empty\n";
  else cout << "S is not empty\n"; // here
  
  S.pop(); // 10 20
  cout << S.top() << '\n'; // 20
  
  S.pop(); // 10
  cout << S.top() << '\n'; // 10
  S.pop(); // empty
  if(S.empty()) cout << "S is empty\n"; // S is empty
  
  cout << S.top() << '\n'; // runtime error 발생 (현재 empty)
  // empty 상황에서 pop을 호출해도 같은 에러 상황 발생!!
  
}

  • STL stack은 clear 함수가 없다!!
while(!stack.empty())
	stack.pop();

위와 같은 방식으로 스택을 빈 상태로 만들 수 있다



  • 스택이 빈 상태 에서 top 혹은 pop을 호출하는 것을 주의!!!
    -> 비었을때 호출하면 런타임 에러 발생!!

profile
매 순간 최선을 다하자
post-custom-banner

0개의 댓글