题目描述
给出一个操作序列,包括:
1 x
:在栈中添加一个元素 x ;2
:删除栈顶元素;3
:查询当前栈顶元素。
输入格式
第一行一个整数 T ,表示操作的数量;
接下来的 T 行,每行一个操作。
输出格式
若干行,对于每个操作 3 ,输出一行表示当前栈顶元素,若栈为空输出 0
。
样例数据
输入样例 #1 | 输出样例 #1 |
---|---|
8 1 1 1 2 1 3 2 3 2 1 4 3 | 2 4 |
样例分析
如上所述。
数据范围
对于 100% 的数据: 1≤T≤100
解题:
#include<bits/stdc++.h>
using namespace std;
vector<int>a;
int n,o,k;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&o);
if(o==1){
scanf("%d",&k);
a.push_back(k);
}else if(o==2){
if(a.size()>0)a.pop_back();
}else{
if(a.size()>0)printf("%d\n",a.back());
else printf("0\n");
}
}
return 0;
}