顺序栈的入栈和出栈c++
时间: 2024-01-03 10:04:25 浏览: 98
顺序栈的入栈和出栈操作可以用 C++ 语言实现,具体代码如下:
```cpp
#include <iostream>
using namespace std;
const int MAXSIZE = 100; // 定义栈的最大长度
// 定义顺序栈结构体
struct SeqStack {
int data[MAXSIZE];
int top; // 栈顶指针
};
// 初始化顺序栈
void InitStack(SeqStack &s) {
s.top = -1; // 栈顶指针初始化为-1
}
// 判断栈是否为空
bool IsEmpty(SeqStack s) {
return s.top == -1;
}
// 判断栈是否已满
bool IsFull(SeqStack s) {
return s.top == MAXSIZE - 1;
}
// 入栈操作
bool Push(SeqStack &s, int x) {
if (IsFull(s)) {
return false; // 栈已满,入栈失败
}
s.top++; // 栈顶指针加1
s.data[s.top] = x; // 将元素x入栈
return true; // 入栈成功
}
// 出栈操作
bool Pop(SeqStack &s, int &x) {
if (IsEmpty(s)) {
return false; // 栈为空,出栈失败
}
x = s.data[s.top]; // 取出栈顶元素
s.top--; // 栈顶指针减1
return true; // 出栈成功
}
int main() {
SeqStack s;
InitStack(s); // 初始化栈
// 入栈操作
Push(s, 1);
Push(s, 2);
Push(s, 3);
// 出栈操作
int x;
Pop(s, x);
cout << "出栈的元素为:" << x << endl;
Pop(s, x);
cout << "出栈的元素为:" << x << endl;
Pop(s, x);
cout << "出栈的元素为:" << x << endl;
if (Pop(s, x)) {
cout << "出栈的元素为:" << x << endl;
} else {
cout << "栈为空,出栈失败!" << endl;
}
return 0;
}
```
以上代码中,我们定义了一个 `SeqStack` 结构体,包含一个数组 `data` 和一个整型变量 `top`,其中 `top` 表示栈顶指针,初始化为 -1。然后我们实现了栈的初始化、判断栈是否为空或已满、入栈和出栈等操作。在主函数中,我们进行了入栈和出栈的测试。
阅读全文