编写一个程序sqstack.cpp,实现顺序栈的各种运算(元素类型为char),在此基础上设计一个程序exp.3-1.cpp完成以下功能:1.初始化栈2.判断栈s是否为空3.依次进栈元素a,b,c,d,e4.判断栈s是否为空5.输出出栈序列6.判断栈s是否非空
时间: 2024-11-29 13:32:40 浏览: 26
在C++中,你可以创建一个简单的顺序栈`SqStack`,它使用数组作为底层数据结构,支持基本的栈操作,如入栈、出栈以及检查栈是否为空。首先,我们先编写`sqstack.cpp`来实现这个基础的顺序栈:
```cpp
#include <iostream>
template <typename T>
class SqStack {
private:
T* data;
size_t top;
static const size_t MAX_SIZE = 10;
public:
SqStack() : data(new T[MAX_SIZE]), top(0) {}
~SqStack() { delete[] data; }
// 入栈
void push(T item) {
if (top < MAX_SIZE) {
data[top++] = item;
} else {
std::cout << "Stack overflow" << std::endl;
}
}
// 出栈
T pop() {
if (top > 0) {
return data[--top];
} else {
std::cout << "Stack underflow" << std::endl;
return T();
}
}
// 判断栈是否为空
bool isEmpty() const {
return top == 0;
}
};
// 使用示例
int main() {
SqStack<char> s;
// 初始化栈
s.push('a');
s.push('b');
s.push('c');
s.push('d');
s.push('e');
// 判断栈是否为空
std::cout << "Is stack empty? " << (s.isEmpty() ? "Yes" : "No") << std::endl;
// 输出出栈序列
std::cout << "Output stack elements: ";
while (!s.isEmpty()) {
std::cout << s.pop() << ' ';
}
// 判断栈是否非空
std::cout << "Is stack non-empty? " << (s.isEmpty() ? "No" : "Yes") << std::endl;
return 0;
}
```
接下来,你可以通过`exp.3-1.cpp`文件来调用`SqStack`类并完成指定的功能:
```cpp
#include "sqstack.h" // 假设sqstack.cpp在当前目录下
int main() {
SqStack<char> s;
// 初始化栈
s.push('a');
s.push('b');
s.push('c');
s.push('d');
s.push('e');
// 判断栈是否为空
if (s.isEmpty()) {
std::cout << "The stack is empty." << std::endl;
} else {
std::cout << "The stack is not empty." << std::endl;
}
// 输出出栈序列
std::string outputStack;
while (!s.isEmpty()) {
outputStack += s.pop();
}
std::cout << "Stack sequence: " << outputStack << std::endl;
// 判断栈是否非空
if (s.isEmpty()) {
std::cout << "The stack is now empty." << std::endl;
} else {
std::cout << "The stack is still not empty." << std::endl;
}
return 0;
}
```
阅读全文