给定一个初始为空的栈和一系列压栈、弹栈操作,请生成C语言程序输出每次弹栈的元素。栈的元素值均为整数。,输入第1行为1个正整数 n,表示操作个数;接下来 n 行,每行表示一个操作,格式为1 d 或0。1 d 表示将整数 d 压栈,0表示弹栈。n 不超过20000。输出:按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出 invalid。
时间: 2023-11-04 09:14:38 浏览: 189
好的,以下是C语言程序的实现:
```c
#include <stdio.h>
#define MAX_SIZE 20000
int stack[MAX_SIZE];
int top = -1;
void push(int x) {
if (top == MAX_SIZE - 1) {
printf("invalid\n");
return;
}
top++;
stack[top] = x;
}
void pop() {
if (top == -1) {
printf("invalid\n");
return;
}
printf("%d\n", stack[top]);
top--;
}
int main() {
int n, op, x;
scanf("%d", &n);
while (n--) {
scanf("%d", &op);
if (op == 1) {
scanf("%d", &x);
push(x);
} else {
pop();
}
}
return 0;
}
```
程序中定义了一个栈和栈顶指针 top,栈中最多可以存放 MAX_SIZE 个整数。push 函数实现入栈操作,如果栈已满则输出 invalid;pop 函数实现出栈操作,如果栈为空则输出 invalid;main 函数根据输入的操作类型调用相应的函数进行操作。
阅读全文