用c++编写顺序栈的以下操作 1.初始化栈 2.入栈、出栈、 3.获取栈顶元素、 4.检查栈是否为空函数, 然后在主函数中完成55,66,77的入栈和出栈操作。
时间: 2024-10-12 21:08:42 浏览: 2
在 C++ 中,我们可以创建一个简单的顺序栈(基于数组实现)来实现上述操作:
```cpp
#include <iostream>
// 定义栈的最大容量
const size_t MAX_SIZE = 10;
class Stack {
private:
int data[MAX_SIZE]; // 存储数据的数组
size_t top; // 栈顶指针
public:
// 初始化栈
Stack() : top(0) {}
// 检查栈是否为空
bool isEmpty() const {
return top == 0;
}
// 入栈(push)
void push(int value) {
if (top >= MAX_SIZE - 1) {
std::cout << "Stack overflow!" << std::endl;
return;
}
data[top++] = value;
}
// 出栈(pop)
void pop() {
if (isEmpty()) {
std::cout << "Stack is empty!" << std::endl;
return;
}
top--;
}
// 获取栈顶元素(peek)
int peek() const {
if (isEmpty()) {
std::cout << "Stack is empty!" << std::endl;
return -1; // 返回错误值表示栈空
}
return data[top];
}
};
int main() {
Stack s;
// 入栈操作
s.push(55);
s.push(66);
s.push(77);
// 出栈操作
std::cout << "Popped element: " << s.pop() << std::endl; // 应该输出66
std::cout << "Popped element: " << s.pop() << std::endl; // 应该输出55
// 再次尝试出栈(此时已无元素),应该显示栈已空
std::cout << "Popped element: " << s.pop() << std::endl;
return 0;
}
```
在这个例子中,我们首先创建了一个 `Stack` 类,包含了初始化、判断栈是否为空、入栈、出栈和查看栈顶元素的操作。在 `main` 函数中,我们进行了55,66和77的入栈,以及相应的出栈操作。
注意,这个顺序栈在接近其最大容量时会报告溢出,实际应用中可能需要动态调整大小或者使用更复杂的数据结构如链表。此外,在没有真正弹出元素的情况下直接查看栈顶元素,可能导致不正确的结果。