用C++代码实现一个栈并完成以下要求: (1) 输入0123入栈后再出栈并打印输出; (2) 对栈顶元素出栈后输出剩余元素并打印输出; (3) 判断此时栈是否为空; (4) 判断此时栈的长度; (5) 判断此时栈顶元素大小。
时间: 2024-11-06 20:13:49 浏览: 20
cpp代码-入栈出栈相同 先全部输入6个元素 再全部输出6个元素 (注:输入的是栈元素) 简化版
在C++中,你可以使用`std::stack`容器来创建一个基本的栈数据结构。这里是一个简单的实现来满足你的要求:
```cpp
#include <iostream>
#include <stack>
// 定义一个栈模板,存储整数
template <typename T>
class MyStack {
private:
std::stack<T> s;
public:
// 入栈操作
void push(T value) {
s.push(value);
}
// 出栈操作并打印
void popAndPrint() {
if (!s.empty()) {
int top = s.top(); // 获取栈顶元素
s.pop(); // 出栈
std::cout << "Top element after popping: " << top << "\n";
} else {
std::cout << "Stack is empty.\n";
}
}
// 打印剩余元素
void printRemaining() {
while (!s.empty()) {
int top = s.top();
std::cout << "Remaining element: " << top << "\n";
s.pop();
}
}
// 判断栈是否为空
bool isEmpty() const {
return s.empty();
}
// 返回栈长
size_t getLength() const {
return s.size();
}
// 判断栈顶元素大小
bool hasValue() const {
return !s.empty();
}
};
int main() {
MyStack<int> mystack;
mystack.push(0);
mystack.push(1);
mystack.push(2);
mystack.push(3);
// 测试要求
mystack.popAndPrint();
mystack.printRemaining();
std::cout << "Is stack empty? " << (mystack.isEmpty() ? "Yes" : "No") << "\n";
std::cout << "Stack length: " << mystack.getLength() << "\n";
if (mystack.hasValue()) {
std::cout << "Stack has a value: " << mystack.top() << "\n";
} else {
std::cout << "Stack doesn't have a value.\n";
}
return 0;
}
```
当你运行这个程序,它会按照你的要求执行每一步,并提供相应的结果。记得C++的栈是LIFO(Last In First Out),所以在出栈时,最先入栈的元素会被先弹出。
阅读全文