编写一个程序sqstack.cpp,实现顺序栈的各种基本运算(假设栈中元素类型ElemType为char)
时间: 2024-06-13 13:04:48 浏览: 182
数据结构c语言版.docx
```
// sqstack.cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 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; // 栈已满,进栈失败
}
s.top++; // 栈顶指针加1
s.data[s.top] = e; // 将元素e放入栈顶
return true; // 进栈成功
}
// 出栈
bool Pop(SqStack &s, ElemType &e) {
if (IsEmpty(s)) {
return false; // 栈为空,出栈失败
}
e = s.data[s.top]; // 取出栈顶元素
s.top--; // 栈顶指针减1
return true; // 出栈成功
}
// 取栈顶元素
bool GetTop(SqStack s, ElemType &e) {
if (IsEmpty(s)) {
return false; // 栈为空,取栈顶元素失败
}
e = s.data[s.top]; // 取出栈顶元素
return true; // 取栈顶元素成功
}
int main() {
SqStack s;
InitStack(s); // 初始化栈
cout << "栈是否为空:" << IsEmpty(s) << endl;
Push(s, 'a'); // 进栈元素a
Push(s, 'b'); // 进栈元素b
Push(s, 'c'); // 进栈元素c
Push(s, 'd'); // 进栈元素d
char e;
Pop(s, e); // 出栈
cout << "出栈元素:" << e << endl;
GetTop(s, e); // 取栈顶元素
cout << "栈顶元素:" << e << endl;
cout << "栈是否为空:" << IsEmpty(s) << endl;
return 0;
}
```
--相关问题--:
1. 什么是顺序栈?
2. 顺序栈的基本运算有哪些?
3
阅读全文