用c++代码实现一个栈并完成以下要求: (1) 输入0123入栈后再出栈并打印输出; (2) 对栈顶元素出栈后输出剩余元素并打印输出; (3) 判断此时栈是否为空; (4) 判断此时栈的长度; (5) 判断此时栈顶元素大小。
时间: 2024-11-03 20:14:12 浏览: 13
cpp代码-入栈出栈相同 先全部输入6个元素 再全部输出6个元素 (注:输入的是栈元素) 简化版
在C++中,我们可以使用STL库中的stack容器来轻松地实现一个栈。以下是一个简单的实现,满足你给出的要求:
```cpp
#include <iostream>
#include <stack>
// 定义栈模板,这里使用int类型作为存储元素
template <typename T>
class CustomStack {
private:
std::stack<T> myStack;
public:
// 入栈操作
void push(T value) {
myStack.push(value);
}
// 出栈操作,获取并返回栈顶元素,若栈空则抛异常
T pop() {
if (myStack.empty()) {
throw std::runtime_error("Stack is empty");
}
return myStack.top();
}
// 判断栈是否为空
bool isEmpty() const {
return myStack.empty();
}
// 获取栈的长度
size_t size() const {
return myStack.size();
}
// 获取并检查栈顶元素,但不改变栈的状态
T top() const {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
return myStack.top();
}
};
int main() {
CustomStack<int> stack;
try {
// 入栈操作
for (int i = 0; i <= 3; ++i) {
stack.push(i);
std::cout << "Pushed " << i << ", Stack: ";
while (!stack.isEmpty()) {
std::cout << stack.pop() << " ";
}
std::cout << "\n";
}
// 输出栈顶元素,然后出栈
int topElement = stack.top(); // 调用top函数获取栈顶
std::cout << "Top element before popping: " << topElement << "\n";
stack.pop();
// 打印剩余元素
std::cout << "After popping, remaining elements: ";
while (!stack.isEmpty()) {
std::cout << stack.pop() << " ";
}
std::cout << "\n";
// 判断栈是否为空、长度以及栈顶元素
std::cout << "Is the stack empty? " << (stack.isEmpty() ? "Yes" : "No") << "\n";
std::cout << "Stack length: " << stack.size() << "\n";
std::cout << "Stack top element: " << (stack.isEmpty() ? "Empty" : stack.top()) << "\n";
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << '\n';
}
return 0;
}
```
当你运行这段代码,你会看到预期的行为,即栈的操作及其结果。
阅读全文