R7-2 栈的实现及基本操作

2024-03-01 12:26:19 浏览数 (2)

分数 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("invalidn");         return -1;     }     printf("%dn",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; }

0 人点赞