设计性实验:设从键盘输入一整数的序列1, 2, 3, ⋯ , ,试设计算法实现: 用栈结构存储输入的整数,当≠ 0时,将进栈;当= 0时,将栈顶元素 出栈并输出。算法应对异常情况(栈满等)给出相应信息。
时间: 2024-03-10 07:50:04 浏览: 32
好的,这是一个很好的设计性实验,下面是实现该算法的代码:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 栈的最大容量
// 定义栈结构
typedef struct {
int data[MAXSIZE]; // 存放栈元素
int top; // 栈顶指针
} Stack;
// 初始化栈
void InitStack(Stack& S) {
S.top = -1;
}
// 判断栈是否为空
bool IsEmpty(Stack S) {
return S.top == -1;
}
// 判断栈是否已满
bool IsFull(Stack S) {
return S.top == MAXSIZE - 1;
}
// 进栈操作
bool Push(Stack& S, int x) {
if (IsFull(S)) {
cout << "栈已满,无法入栈!" << endl;
return false;
}
S.data[++S.top] = x;
return true;
}
// 出栈操作
bool Pop(Stack& S, int& x) {
if (IsEmpty(S)) {
cout << "栈已空,无法出栈!" << endl;
return false;
}
x = S.data[S.top--];
return true;
}
// 主函数,测试算法
int main() {
Stack S;
InitStack(S);
int x;
while (cin >> x) {
if (x == 0) {
int y;
if (Pop(S, y)) {
cout << y << endl;
}
} else {
Push(S, x);
}
}
return 0;
}
```
以上程序实现了从键盘输入一整数的序列,并使用栈结构存储输入的整数,当输入的整数不等于0时,将其进栈;当输入的整数等于0时,将栈顶元素出栈并输出。并在栈满或栈空的情况下给出相应信息。