帮我写一段顺序栈代码 创建一个空的顺序栈,能存放的最大元素个数为m 栈顶top设置为0,若m=0,则返回NULL
时间: 2024-10-27 08:09:08 浏览: 14
顺序栈通常使用数组来实现,其特点是在栈底预先分配好一块存储空间,栈顶指针指向栈顶元素 以下是一个简单的Java实现:.txt
顺序栈(也称为数组栈)通常使用数组来实现,当栈满时,就无法再添加元素了。这里是一个简单的 C++ 顺序栈的实现,包括初始化、入栈、出栈以及检查栈是否为空或已满的操作:
```cpp
#include <iostream>
class Stack {
private:
int* stack; // 数组存储栈中的元素
int size; // 当前栈的大小
int capacity; // 最大容量
int top; // 栈顶指针
public:
// 构造函数,创建一个空栈,最大元素个数为 m
explicit Stack(int m) : stack(new int[m]), capacity(m), top(0) {}
// 检查栈是否为空
bool isEmpty() const { return top == 0; }
// 检查栈是否已满
bool isFull() const { return top == capacity; }
// 入栈操作 (如果还有空间)
void push(int value) {
if (!isFull()) {
stack[top++] = value;
} else {
std::cerr << "Stack overflow, cannot push." << std::endl;
}
}
// 出栈操作 (如果栈不为空)
int pop() {
if (!isEmpty()) {
int value = stack[top - 1];
stack[--top] = 0; // 用 0 填充防止内存泄露
return value;
} else {
std::cerr << "Stack underflow, cannot pop." << std::endl;
return -1; // 返回错误码或其他标识符
}
}
// 删除栈并释放内存
~Stack() {
delete[] stack;
}
};
int main() {
Stack myStack(5); // 创建一个容量为 5 的栈
if (myStack.isEmpty()) {
std::cout << "Stack is empty.\n";
}
myStack.push(1);
myStack.push(2);
if (myStack.isFull()) {
std::cout << "Stack is full.\n";
}
std::cout << "Top element: " << myStack.pop() << "\n"; // 输出并弹出栈顶元素
return 0;
}
```
阅读全文