문제
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
-
push X: 정수 X를 스택에 넣는 연산이다.
-
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
-
size: 스택에 들어있는 정수의 개수를 출력한다.
-
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
-
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
소스코드
#include <iostream>
#include <string>
using namespace std;
void get_cmd();
void push(int x);
void pop(void);
void size(void);
void empty(void);
void top(void);
int s[10000];
int idx=-1;
int main(void)
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
get_cmd();
}
void get_cmd()
{
string cmd;
cin >> cmd;
if (cmd == "push")
{
int x;
cin >> x;
push(x);
}
else if (cmd == "pop")
{
pop();
}
else if (cmd == "size")
{
size();
}
else if (cmd == "empty")
{
empty();
}
else if (cmd == "top")
{
top();
}
return;
}
void push(int x)
{
s[++idx] = x;
}
void pop(void)
{
if (idx == -1)
cout << -1 << endl;
else
{
cout << s[idx] << endl;
--idx;
}
}
void size(void)
{
cout << idx + 1 << endl;
}
void empty(void)
{
if (idx == -1)
cout << 1 << endl;
else
cout << 0 << endl;
}
void top(void)
{
if (idx == -1)
cout << -1 << endl;
else
cout << s[idx] << endl;
}