编写一个程序sqstack.cpp,实现顺序栈的各种基本运算(假设栈中元素类型为ElemType为char)
时间: 2024-12-10 22:51:24 浏览: 15
SqStack.cpp
首先,我们需要明确的是,由于这是一个文字环境,我无法直接编写代码文件。但我可以提供一个简单的C++程序框架,展示如何实现一个顺序栈(也称为数组栈)的基本操作,如初始化、入栈(push)、出栈(pop)、查看顶部元素(top)和判断栈是否为空(empty):
```cpp
#include <iostream>
using namespace std;
#define MAX_SIZE 100 // 定义栈的最大容量
class Stack {
private:
char data[MAX_SIZE]; // 存储栈元素
int top; // 栈顶指针
public:
// 初始化栈
Stack() : top(-1) {}
// 判断栈是否为空
bool isEmpty() {
return (top == -1);
}
// 查看栈顶元素(只读)
char getTop() {
if (isEmpty()) {
throw "Stack is empty!";
}
return data[top];
}
// 入栈(push)
void push(char value) {
if (top >= MAX_SIZE - 1) {
throw "Stack overflow!";
}
data[++top] = value;
}
// 出栈(pop)
char pop() {
if (isEmpty()) {
throw "Stack underflow!";
}
char temp = data[top--];
return temp;
}
};
int main() {
Stack s;
try {
s.push('A');
s.push('B');
cout << "Top element is: " << s.getTop() << endl; // 输出 'B'
cout << "Popped element is: " << s.pop() << endl; // 输出 'B', 现在栈顶是'A'
cout << (s.isEmpty() ? "Stack is empty" : "Stack is not empty") << endl; // 输出 "Stack is not empty"
} catch (const char* msg) {
cerr << "Error: " << msg << endl;
}
return 0;
}
```
这个程序实现了顺序栈的基本功能,并处理了栈溢出和空栈的情况。你可以将此代码复制到名为`sqstack.cpp`的文件中,并在支持C++编译器上运行。记得根据需要调整`MAX_SIZE`的值。
阅读全文