栈的初始化,入栈、出栈、判断栈空、判断栈满、取栈顶等基本操作算法的代码以及主函数
时间: 2023-12-27 09:03:02 浏览: 23
好的,以下是栈的基本操作算法的代码和主函数:
```c++
#include <iostream>
using namespace std;
// 定义栈的最大长度
const int MAXSIZE = 100;
// 定义栈结构体
struct Stack {
int data[MAXSIZE];
int top; // 栈顶指针
};
// 初始化栈
void InitStack(Stack &s) {
s.top = -1;
}
// 判断栈空
bool IsEmpty(Stack s) {
if (s.top == -1) {
return true;
} else {
return false;
}
}
// 判断栈满
bool IsFull(Stack s) {
if (s.top == MAXSIZE - 1) {
return true;
} else {
return false;
}
}
// 入栈操作
bool Push(Stack &s, int item) {
if (IsFull(s)) {
return false;
} else {
s.top++;
s.data[s.top] = item;
return true;
}
}
// 出栈操作
bool Pop(Stack &s, int &item) {
if (IsEmpty(s)) {
return false;
} else {
item = s.data[s.top];
s.top--;
return true;
}
}
// 取栈顶元素
bool GetTop(Stack s, int &item) {
if (IsEmpty(s)) {
return false;
} else {
item = s.data[s.top];
return true;
}
}
int main() {
Stack s;
InitStack(s);
int item, top_item;
// 入栈操作
for (int i = 0; i < 5; i++) {
Push(s, i);
}
// 出栈操作
for (int i = 0; i < 5; i++) {
Pop(s, item);
cout << item << " ";
}
// 取栈顶元素
Push(s, 5);
GetTop(s, top_item);
cout << top_item << endl;
return 0;
}
```
希望对您有所帮助!