3)设从键盘输入一整数的序列: a1, a2, a3, …, an,试编写算法实现:用栈结构存储\n输入的整数,当 ai≠ -1 时,将 ai 进栈;当 ai=-1 时,输出栈顶整数并出栈。算法应对异常情\n况(入栈满等)给出相应的信息。用C语言实现
时间: 2023-05-28 14:04:48 浏览: 94
所有基础数据结构和算法的纯C语言实现,如各自排序、链表、栈、队列、各种树....
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 栈的最大容量
typedef struct Stack {
int data[MAX_SIZE];
int top;
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 入栈
void push(Stack *s, int x) {
if (is_full(s)) {
printf("Stack overflow!\n");
exit(1);
}
s->top++;
s->data[s->top] = x;
}
// 出栈
int pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow!\n");
exit(1);
}
int x = s->data[s->top];
s->top--;
return x;
}
int main() {
Stack s;
init(&s);
int x;
while (scanf("%d", &x) != EOF) {
if (x != -1) {
push(&s, x);
} else {
if (is_empty(&s)) {
printf("Stack is empty!\n");
} else {
printf("%d\n", pop(&s));
}
}
}
return 0;
}
```
阅读全文