分数 15
作者 朱允刚
单位 吉林大学
给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。
输入格式:
输入第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> #define MAX 20000 //元素elem进栈 int push(int* a,int top,int elem){ a[++top]=elem; return top; } //数据元素出栈 int pop(int * a,int top){ if (top==-1) { printf("invalid\n"); return -1; } printf("%d\n",a[top]);//弹栈元素 top--; return top; } int main() { int n; scanf("%d",&n); int i,b,t;//t是操作,b是数 int top=-1; int a[MAX];//数组储存 while(n--){ scanf("%d",&t); if(t==1){ scanf("%d",&b); top=push(a,top,b); }else if(t==0){ top=pop(a,top); } } return 0; }