设从键盘输入一整数的序列: a1, a2, a3, ⋯ , an,试编写算法实现:用栈结构存储输入的整数,当ai≠ -1 时,将ai 进栈;当ai=-1 时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。用C语言实现
时间: 2024-05-04 11:16:33 浏览: 155
任意从键盘输入一组数字,然后将这些数字按顺序排列
4星 · 用户满意度95%
好的,我明白了您的问题。以下是用 C 语言实现该算法的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 定义栈的最大容量
int stack[MAX_SIZE]; // 定义存储栈的数组
int top = -1; // 栈顶指针初始化为-1,表示栈为空
int main()
{
int n, a;
printf("请输入整数序列的长度 n:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个整数:", i + 1);
scanf("%d", &a);
if (a != -1) { // 如果输入的整数不是 -1,入栈
if (top >= MAX_SIZE - 1) { // 如果栈已满,提示异常信息并退出程序
printf("栈已满,无法入栈!\n");
exit(EXIT_FAILURE);
}
stack[++top] = a; // 栈顶指针加1并将整数入栈
} else if (top == -1) { // 如果栈为空,输出异常信息并退出程序
printf("栈为空,无法出栈!\n");
exit(EXIT_FAILURE);
} else { // 如果输入的整数是 -1,输出栈顶元素并出栈
printf("栈顶整数为:%d\n", stack[top--]);
}
}
return 0;
}
```
这个算法通过循环读入整数序列,并使用栈实现出栈操作。当输入的整数不是 -1 时,入栈。当输入的整数是 -1 时,判断栈是否为空,如果为空则输出异常信息并退出程序,否则输出栈顶元素并出栈。如果栈已满,也会输出异常信息并退出程序。我希望这个代码对您有所帮助。
阅读全文