试编写算法,采用顺序存储方式实现栈的初始化、入栈、出栈操作。要求输入整形数据,输入0表示结束(0不存储在栈中)。c++
时间: 2024-10-08 08:25:37 浏览: 30
当然可以。以下是使用C++实现栈(Stack)的顺序存储(数组实现)的基本步骤:
```cpp
#include <iostream>
const int MAX_SIZE = 100; // 定义栈的最大容量
class Stack {
private:
int top; // 栈顶指针
int data[MAX_SIZE]; // 顺序存储栈的数据
public:
Stack() : top(-1) {} // 初始化栈为空
// 判断栈是否为空
bool isEmpty() { return top == -1; }
// 判断栈是否已满
bool isFull() { return top == MAX_SIZE - 1; }
// 入栈(push)操作
void push(int value) {
if (isFull()) {
std::cout << "Stack is full.\n";
return;
}
data[++top] = value;
}
// 出栈(pop)操作
int pop() {
if (isEmpty()) {
std::cout << "Stack is empty.\n";
return -1; // 返回错误码,表示无法弹出元素
}
return data[top--];
}
// 获取栈顶元素(peek)
int peek() const {
if (isEmpty()) {
std::cout << "Stack is empty.\n";
return -1;
}
return data[top];
}
};
int main() {
Stack s;
while (true) {
int input;
std::cin >> input;
if (input == 0)
break;
s.push(input);
std::cout << "Pushed: " << input << "\n";
if (!s.isEmpty())
std::cout << "Popped: " << s.pop() << "\n";
else
std::cout << "Cannot pop from an empty stack.\n";
}
return 0;
}
```
在这个例子中,我们创建了一个名为`Stack`的类,包含了栈顶指针`top`和动态数组`data`。实现了基本的栈操作,如入栈、出栈以及查看栈顶元素。程序会一直运行,直到用户输入0为止。
阅读全文