如何实现顺序栈的基本操作算法(初始化s,判断栈s是否为空,依次进栈元素a,b,c,d,e,判断栈s是否非空,)?
时间: 2024-11-28 11:26:15 浏览: 21
顺序栈是一种基于数组的数据结构,用于实现基本的入栈(push)、出栈(pop)以及查看栈顶元素(top)的操作。以下是使用C++实现顺序栈基础操作的简单算法:
1. 初始化栈(s):
```cpp
class Stack {
private:
int* arr; // 数组存储栈元素
int top; // 栈顶指针,初始值为-1表示栈为空
int capacity; // 栈的最大容量
public:
Stack(int size) {
arr = new int[size];
top = -1;
capacity = size;
}
};
```
2. 判断栈是否为空:
```cpp
bool isEmpty(Stack& s) {
return s.top == -1;
}
```
3. 入栈元素:
```cpp
void push(Stack& s, int value) {
if (s.isFull()) { // 检查栈是否已满
throw std::overflow_error("Stack overflow");
}
s.arr[++s.top] = value; // 栈顶加一并将元素存入
}
```
4. 出栈元素(若栈非空):
```cpp
int pop(Stack& s) {
if (isEmpty(s)) {
throw std::underflow_error("Stack underflow");
}
return s.arr[s.top--]; // 返回并移除栈顶元素
}
```
5. 查看栈顶元素(若栈非空):
```cpp
int peek(Stack& s) {
if (isEmpty(s)) {
throw std::runtime_error("Cannot peek at empty stack");
}
return s.arr[s.top]; // 返回但不移除栈顶元素
}
```
阅读全文