内容1:编写一个程序sqstack.cpp,实现顺序栈(假设栈中元素类型ElemType为char的各种基本运算,并在此基础上设计一个程序exp21.cpp完成以下功能。 (1)初始化栈s。 (2)判断栈s是否非空。 (3)依次进栈元素a、b、c、d、e。 (4)判断栈s是否非空。 (5)输出出栈序列。 (6)判断栈s是否非空。 (7)释放栈。
时间: 2024-03-23 08:43:04 浏览: 166
好的,以下是sqstack.cpp的代码实现:
```c++
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义栈的最大长度为100
typedef char ElemType; // 定义元素类型为char
struct SqStack {
ElemType data[MAXSIZE]; // 存放栈中元素
int top; // 栈顶指针
};
// 初始化栈
void InitStack(SqStack &s) {
s.top = -1; // 栈顶指针初始值为-1
}
// 判断栈是否非空
bool IsEmpty(SqStack s) {
return s.top == -1;
}
// 判断栈是否已满
bool IsFull(SqStack s) {
return s.top == MAXSIZE - 1;
}
// 进栈操作
bool Push(SqStack &s, ElemType e) {
if (IsFull(s)) {
return false;
} else {
s.top++;
s.data[s.top] = e;
return true;
}
}
// 出栈操作
bool Pop(SqStack &s, ElemType &e) {
if (IsEmpty(s)) {
return false;
} else {
e = s.data[s.top];
s.top--;
return true;
}
}
// 获取栈顶元素
bool GetTop(SqStack s, ElemType &e) {
if (IsEmpty(s)) {
return false;
} else {
e = s.data[s.top];
return true;
}
}
// 释放栈
void DestroyStack(SqStack &s) {
s.top = -1;
}
```
以下是exp21.cpp的代码实现:
```c++
#include <iostream>
#include "sqstack.cpp"
using namespace std;
int main() {
SqStack s;
InitStack(s); // 初始化栈
cout << "栈是否为空:" << IsEmpty(s) << endl; // 判断栈是否非空
Push(s, 'a'); // 进栈操作
Push(s, 'b');
Push(s, 'c');
Push(s, 'd');
Push(s, 'e');
cout << "栈是否为空:" << IsEmpty(s) << endl; // 判断栈是否非空
cout << "出栈序列:";
while (!IsEmpty(s)) {
ElemType e;
Pop(s, e); // 出栈操作
cout << e << " ";
}
cout << endl;
cout << "栈是否为空:" << IsEmpty(s) << endl; // 判断栈是否非空
DestroyStack(s); // 释放栈
return 0;
}
```
输出结果为:
```
栈是否为空:1
栈是否为空:0
出栈序列:e d c b a
栈是否为空:1
```
阅读全文