给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。
输入格式:
输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。
输出格式:
按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。
输入样例:
输出样例:
思路
栈的入门题了属于是,直接定义一个stl的stack,照着题意处理输入就好了。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <bits/stdc++.h>
using namespace std;
int main() { int n; cin>>n; stack<int> s; for(int i=0;i<n;i++) { int op; scanf("%d",&op); if(op) { int data; scanf("%d",&data); s.push(data); } else { if(!s.empty()) { printf("%d\n",s.top()); s.pop(); } else { printf("invalid\n"); } } } }
|