用c语言实现假设给定的整数栈初始状态为空,栈的最大容量为100。从标准输入中输入一组栈操作,按操作顺序输出出栈元素序列。栈操作:1表示入栈操作,后跟一个整数(不为1、0和-1)为入栈元素;0表示出栈操作;-1表示操作结束
时间: 2024-05-28 08:08:43 浏览: 69
C语言实现逆波兰式实例
以下是使用C语言实现的代码:
#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
int main() {
int operation, element;
while (1) {
scanf("%d", &operation);
if (operation == -1) {
break;
}
if (operation == 0) {
if (top == -1) {
printf("Error: Stack is empty!\n");
} else {
printf("%d\n", stack[top]);
top--;
}
} else {
scanf("%d", &element);
if (top == MAX_SIZE - 1) {
printf("Error: Stack is full!\n");
} else {
top++;
stack[top] = element;
}
}
}
return 0;
}
在这个程序中,我们使用数组来实现整数栈。栈的最大容量被定义为MAX_SIZE,它被设置为100。栈顶元素的位置被记录在变量top中,初始值为-1,表示栈为空。
在主函数中,我们使用一个while循环来读取输入的栈操作。如果输入的操作为-1,表示输入结束,循环结束。如果输入的操作为0,表示出栈操作。如果栈为空,我们输出错误信息;否则,我们输出栈顶元素并将top减1,相当于出栈。如果输入的操作为1,表示入栈操作。如果栈已满,我们输出错误信息;否则,我们将元素入栈,即将它存储在stack[top+1]中,并将top加1,相当于入栈。
最后,我们返回0表示程序正常结束。
阅读全文