使用C++编写一个程序,在自定义函数中完成下列功能并在主函数中进行测试《下列要求中所说的栈均指顺序线》:(1) 初始化栈S。(2) 销毁栈S。(3) 判断栈5是否为空。(4) 将元素e入栈。(5) 将栈顶元素出栈并保存到元素e中,
时间: 2024-10-11 18:07:06 浏览: 44
在C++中,你可以使用STL中的stack容器来实现这个简单的栈操作。以下是一个基础的例子:
```cpp
#include <iostream>
#include <stack>
// 自定义栈模板
template <typename T>
class CustomStack {
public:
// 构造函数初始化栈
CustomStack() : top(-1) {}
// 插入元素
void push(T value) {
stack_.push(value);
++top;
}
// 出栈元素并返回
T pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
T result = stack_.top();
stack_.pop();
--top;
return result;
}
// 判断栈是否为空
bool isEmpty() const {
return top == -1;
}
private:
int top; // 栈顶元素的位置
std::stack<T> stack_; // 实际的栈存储
};
int main() {
try {
// 初始化栈
CustomStack<int> s;
// 测试(1)
std::cout << "Stack initialized.\n";
// 测试(2),这里没有直接的销毁栈的操作,因为C++的栈会在程序结束时自动释放
// 如果需要手动管理资源,可以考虑析构函数,但在这里省略
// 测试(3)
if (s.isEmpty()) {
std::cout << "Stack is empty.\n";
} else {
std::cout << "Stack is not empty.\n";
}
// 测试(4)
s.push(5);
s.push(10);
// 测试(5)
int e;
e = s.pop(); // e now holds the popped value
std::cout << "Popped element: " << e << "\n";
} catch (const std::exception& ex) {
std::cerr << "Error: " << ex.what() << '\n';
}
return 0;
}
```
阅读全文