7-1 栈的实现及基本操作添加链接描述
给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。
输入格式:
输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。
输出格式:
按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。
输入样例:
在这里给出一组输入。例如:
7
1 1
1 2
0
0
0
1 3
0
输出样例:
在这里给出相应的输出。例如:
2
1
invalid
3
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int a[n+1];
int i,end,j;
int xh,caozuo;
end=0;
for (i=1;i<=n;i++){
scanf("%d",&caozuo);
if(caozuo==0){
if(end==0){
printf("invalid\n");
}
else {
printf("%d\n",a[end]);
end--;
}
}
else {
scanf("%d",&xh);
end++;
a[end]=xh;
}
}
return 0;
}