用C语言实现给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。 输入格式: 输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1...
时间: 2023-11-04 08:11:14 浏览: 116
好的,以下是用C语言实现给定一个初始为空的栈和一系列压栈、弹栈操作的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 栈的最大长度
int stack[MAX_SIZE]; // 定义栈
int top = -1; // 栈顶指针,初始值为-1,表示空栈
void push(int x) {
if (top == MAX_SIZE - 1) { // 栈已满
printf("Error: stack is full!\n");
return;
}
stack[++top] = x; // 先将top+1,再将x入栈
}
int pop() {
if (top == -1) { // 栈为空
printf("Error: stack is empty!\n");
return -1;
}
return stack[top--]; // 先返回栈顶元素,再将top-1
}
int main() {
int n, op, x;
scanf("%d", &n);
while (n--) {
scanf("%d", &op);
if (op == 1) { // 压栈操作
scanf("%d", &x);
push(x);
} else if (op == 2) { // 弹栈操作
printf("%d\n", pop());
} else {
printf("Error: invalid operation!\n");
}
}
return 0;
}
```
程序中,栈的最大长度为100,可以根据需要修改。栈使用数组实现,栈顶指针top初始值为-1,表示空栈。压栈操作使用push函数实现,先判断栈是否已满,如果已满则输出错误信息,否则将top+1,再将x入栈。弹栈操作使用pop函数实现,先判断栈是否为空,如果为空则输出错误信息,否则返回栈顶元素,并将top-1。主函数中,首先读入操作个数n,然后循环n次,每次读入操作类型op,如果op为1,则读入要压入栈中的元素x,调用push函数实现压栈操作;如果op为2,则调用pop函数实现弹栈操作;否则输出错误信息。
阅读全文