给定一个长度为6的顺序栈,完成判断栈空,栈满等操作的c++代码
时间: 2024-10-12 12:11:59 浏览: 31
C++ 递归 输出所有出栈方案
4星 · 用户满意度95%
在C++中,你可以使用标准库中的`stack`容器,它实现了自动管理大小的栈。对于长度固定的栈,虽然`stack`不是最佳选择,但我们可以手动模拟一个固定大小的栈结构。这里是一个简单的示例,展示了如何创建一个长度为6的栈,并实现入栈、出栈、判断栈空和栈满的操作:
```cpp
#include <iostream>
#include <vector>
class FixedSizeStack {
private:
std::vector<int> stack_data;
const int MAX_SIZE = 6;
public:
// 构造函数
FixedSizeStack() : stack_data(MAX_SIZE, 0) {}
// 判断栈是否为空
bool isEmpty() const {
return stack_data.empty();
}
// 判断栈是否已满
bool isFull() const {
return stack_data.size() == MAX_SIZE;
}
// 入栈 (如果栈未满)
void push(int value) {
if (!isFull()) {
stack_data.push_back(value);
std::cout << "Pushed value: " << value << std::endl;
} else {
std::cerr << "Stack is full, can't push." << std::endl;
}
}
// 出栈 (若栈非空)
void pop() {
if (!isEmpty()) {
stack_data.pop_back();
std::cout << "Popped value: " << stack_data.back() << std::endl;
} else {
std::cerr << "Stack is empty, can't pop." << std::endl;
}
}
// 查看栈顶元素 (无副作用,即使栈空也不会出错)
int top() const {
if (!isEmpty()) {
return stack_data.back();
} else {
throw std::runtime_error("Stack is empty.");
}
}
};
int main() {
FixedSizeStack my_stack;
// 示例操作
my_stack.push(1);
my_stack.push(2);
my_stack.push(3); // 输出: Stack is full, can't push.
if (my_stack.isEmpty()) {
std::cout << "Stack is empty." << std::endl;
}
return 0;
}
```
在这个例子中,`push()` 和 `pop()` 方法会检查栈的状态,确保不会越界。`top()` 方法则可以在不改变栈的状态下查看栈顶元素。
阅读全文