栈的基本操作实现:初始化、栈空、入栈、出栈、取栈顶元素。 基本要求 (1)采用顺序存储结构,实现栈的基本操作实现
时间: 2024-10-24 08:11:47 浏览: 53
栈是一种特殊的数据结构,通常遵循“后进先出”(Last In, First Out,LIFO)的原则,主要用于临时保存数据或执行递归调用时的操作。在采用顺序存储结构(如数组)的情况下,我们可以这样实现栈的基本操作:
1. **初始化**:
- 创建一个固定大小的数组作为栈容器,初始长度设为0表示栈为空。
```c++
int stackSize = 10; // 假设栈的最大容量为10
int* stackArray = new int[stackSize];
```
2. **判断栈是否为空**:
- 初始状态,栈指针`top = -1`表示栈为空。
- 当`top`等于数组的索引最大值时,表示栈为空。
```c++
bool isEmpty() {
return top == -1;
}
```
3. **入栈(压栈)**:
- 首先检查栈是否已满,若不满则将元素放在栈顶并更新`top`。
```c++
void push(int value) {
if (top < stackSize - 1) {
stackArray[++top] = value;
} else {
// 栈满,这里可以根据实际情况处理,比如抛出异常或动态扩容
std::cout << "Stack overflow!" << std::endl;
}
}
```
4. **出栈(弹栈)**:
- 如果栈不为空,从栈顶取出元素并返回,同时将`top`减一。
```c++
int pop() {
if (!isEmpty()) {
return stackArray[top--];
} else {
// 栈空,返回错误信息
std::cout << "Stack underflow!" << std::endl;
return -1; // 返回一个特定值表示错误
}
}
```
5. **获取栈顶元素**:
- 这个操作和出栈类似,但不实际移除元素,只查看栈顶内容。
```c++
int peek() {
if (!isEmpty()) {
return stackArray[top];
} else {
std::cout << "Stack is empty!" << std::endl;
return -1; // 同上,表示错误
}
}
```
6. **销毁/清空栈**:
- 结束程序时,记得释放内存。
```c++
~Stack() {
delete[] stackArray;
}
```
或者在不再需要时手动调用`clear()`方法:
```c++
void clear() {
top = -1;
}
```
阅读全文