공부/알고리즘

[ 알고리즘 ] 스택 , STL stack

haena02 2022. 12. 21. 02:32
반응형

스택이란 선입후출의 자료구조이다.

 

원소의 추가,제거,제일상단의 원소확인이 O(1)에 가능하지만

다른 위치의 원소확인과 변경이 원칙적으로 불가능하다. 

하지만 배열과 연결리스트로 스택을 구현한다면 가능하다.

 

1. 배열로 스택 구현하기

cosnt in MX=1000005;
int dat[MX];
int pos=0  //위치

void push(int x){
	dat[pos++]=x;
}
void pop(){
	pos--;
}
void top(){
	dat[pos-1];
}

 

 

2. STL

 

#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
  cout << S.size() << '\n'; // 3
  if(S.empty()) cout << "S is empty\n";
  else cout << "S is not empty\n"; // S is not empty
  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 발생
}

 

반응형