用c++写:设从键盘输入一整数的序列: a, a2,a3....,.n,试编写算法实现:用栈结构存储输入的整数,当a≠-1时,将a进栈;当a=-1时,输出栈顶整数并出栈.算法应对异常情况(入栈满等)给出相应的信息.
时间: 2024-05-05 12:18:47 浏览: 76
C++ 六种常用输入
这是一个关于数据结构的问题,可以直接回答。以下是C语言的代码实现:
```c
#include <stdio.h>
#define MAXSIZE 100 // 栈的最大容量
typedef struct Stack {
int data[MAXSIZE];
int top;
} Stack;
// 初始化栈
void InitStack(Stack* S) {
S->top = -1;
}
// 判断栈空
int IsEmpty(Stack* S) {
return (S->top == -1);
}
// 判断栈满
int IsFull(Stack* S) {
return (S->top == MAXSIZE - 1);
}
// 入栈
void Push(Stack* S, int x) {
if (IsFull(S)) {
printf("Stack Overflow\n");
return;
}
S->data[++S->top] = x;
}
// 出栈
int Pop(Stack* S) {
if (IsEmpty(S)) {
printf("Stack is Empty\n");
return -1;
}
return S->data[S->top--];
}
int main() {
Stack S;
InitStack(&S);
int a;
scanf("%d", &a);
while (a != -1) {
Push(&S, a);
scanf("%d", &a);
}
while (!IsEmpty(&S)) {
printf("%d ", Pop(&S));
}
return 0;
}
```
当输入的整数序列超过栈最大容量时,程序会输出“Stack Overflow”,当栈为空时,程序会输出“Stack is Empty”。
阅读全文