배열로 구현해 보았는데, 동적 할당으로 구현하거나, C++ STACK헤더 파일을 써봐도 좋을 것 같다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int my_stack[10001];
int my_size = 0; // stack에 들어 있는 수
void push(int a);
int top();
int size();
int pop();
int empty();
int main() {
int n;
int temp;
string str;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> str;
if (str == "push") {
cin >> temp;
push(temp);
}
else if (str == "pop") {
cout << pop() << '\n';
}
else if (str == "size") {
cout << size() << '\n';
}
else if (str == "empty") {
cout << empty() << '\n';
}
else if (str == "top") {
cout << top() << '\n';
}
}
return 0;
}
void push(int a) {
my_stack[my_size] = a;
my_size++;
}
int pop() {
if (empty() == 1)
return -1;
else {
my_size--;
return my_stack[my_size];
}
}
int top() {
if (empty() == 0)
return my_stack[my_size - 1];
else
return -1;
}
int empty() {
return my_size == 0 ? 1 : 0;
}
int size() {
return my_size;
}