2、设从键盘输入一整数的序列:a,, a, a3..., an,试编写算法实现:用栈结构存储输入的整数,当a≠-1时,将a,进栈;当a=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应反馈。 语言要求用c++
时间: 2023-06-11 15:06:38 浏览: 105
可以使用C语言中的数组来实现栈结构,以下是实现该算法的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100 // 栈的最大容量
int stack[MAX_SIZE]; // 栈数组
int top = -1; // 栈顶指针初始化为-1
int is_full() { // 判断栈是否已满
return top == MAX_SIZE - 1;
}
int is_empty() { // 判断栈是否为空
return top == -1;
}
void push(int x) { // 入栈操作
if (is_full()) {
printf("栈已满,无法入栈\n");
} else {
stack[++top] = x;
}
}
int pop() { // 出栈操作
if (is_empty()) {
printf("栈为空,无法出栈\n");
return -1;
} else {
return stack[top--];
}
}
int main() {
int num;
while (1) {
printf("请输入整数:");
scanf("%d", &num);
if (num == -1) {
int x = pop();
if (x != -1) {
printf("%d\n", x);
}
} else {
push(num);
}
}
return 0;
}
```
该算法中,is_full和is_empty函数分别用来判断栈是否已满和是否为空;push函数用来将元素入栈;pop函数用来将栈顶元素出栈并返回;在输入-1时,调用pop函数输出栈顶元素并将其出栈。如果栈已满或者栈为空,程序会给出相应的反馈。
阅读全文