数据结构在顺序栈存储体上,编写进栈与出栈函数,在主函数调用进栈与出栈,实现若干次的进栈与出栈操作
时间: 2024-11-13 13:41:56 浏览: 26
shunxubiao.rar_栈的顺序表_顺序栈,出栈
在数据结构中,顺序栈通常是指基于数组实现的栈,数组提供了一种连续的内存空间来存放栈元素。我们可以用一个整数`top`来标记栈顶位置。以下是使用C++语言的一个简单例子,展示了如何在顺序栈存储体上编写入栈(push)和出栈(pop)函数,以及如何在主函数中调用它们实现多次操作:
```cpp
#include <iostream>
using namespace std;
#define MAX_SIZE 100 // 栈的最大容量
int top = -1; // 初始化栈顶为-1,表示栈为空
// 功能:将元素e压入栈顶
void push(int e) {
if (top >= MAX_SIZE - 1) {
cout << "Stack overflow. Cannot push element." << endl;
return;
}
stack[top + 1] = e; // 元素后插法,因为数组下标从0开始
top++; // 栈顶加一
}
// 功能:弹出栈顶元素并返回
int pop() {
if (top == -1) {
cout << "Stack underflow. No element to pop." << endl;
return -1; // 表示栈已空,返回错误码
} else {
int popped = stack[top]; // 获取栈顶元素
stack[top] = 0; // 清空栈顶位置
top--; // 栈顶减一
return popped;
}
}
int main() {
stack[0] = 0; // 初始化栈,可以省略这一步,如果栈一开始就是空的
// 进栈与出栈操作示例
for (int i = 0; i < 5; i++) {
push(i); // 入栈
cout << "After pushing " << i << ": ";
while (!is_empty()) { // 判断栈非空再出栈
cout << pop() << " ";
}
cout << endl;
}
return 0;
}
```
在这个例子中,`is_empty()`函数可以根据实际情况实现,但这里未列出。在`main`函数里,我们进行了五次进栈操作,每次出栈直到栈变为空。注意,对于顺序栈,出栈前要检查是否为空,避免尝试访问不存在的元素。
阅读全文