최대 1 분 소요

Stack

정의와 성질

  • FILO(Fisrt In Last Out) 자료구조
  • 원소의 추가: O(1)
  • 원소의 제거: O(1)
  • 제일 상단의 원소 확인: O(1)
  • 제일 상단이 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능

    구현

  • 배열 혹은 연결리스트를 이용하여 구현 가능
  • 배열로 구현
    // 배열로 구현
    #include<iostream>
    using namespace std;
    const int MX = 1000005;
    int dat[MX]; // 데이터 저장
    int pos=0; // 인덱스(다음 원소가 삽입될 곳을 가리키고 있음)
    void push(int x){
      dat[pos]=x;
      pos++;
    }
    void pop(){
      pos--;
    }
    int top(){
      if(pos>=1){
          return dat[pos-1];
      }
      else{
          return -1;
      }
    }
    void test(){
      push(5);
      push(4);
      push(3);
      cout<<top()<<'\n';
      pop();
      pop();
    }
    int main(void){
      test();
      return 0;
    }
    

    STL Stack

    #include<iostream>
    #include<stack>
    using namespace std;
    int main(void){
      stack<int> S;
      S.push(10); // 10
      S.push(20); // 10 20
      cout<<S.size()<<'\n'; // 2
      S.pop(); // 10
      S.pop(); //
      if(S.empty()){
          cout<<"empty\n";
      }
      return 0;
    }