考研学习—数据结构—顺序栈
作者:
克里斯保罗
,
2022-07-29 11:31:46
,
所有人可见
,
阅读 221
顺序栈的基本操作
有问题欢迎大家指出
#include <iostream>
using namespace std;
const int N = 250;
//定义结构体
typedef struct {
int data[N];
int top; //存放栈顶下标
}SqStack;
//初始化
void InitStack(SqStack &s)
{
s.top = -1; //初始化栈顶指针 ①指向栈顶元素
//s.top = 0 // ②指向栈顶元素的下一个位置
}
//判断栈是否为空
bool StackEmpty(SqStack s)
{
if(s.top == -1) return true; //空
return false; //非空
}
//进栈
bool Push(SqStack &s, int e)
{
if(s.top == N - 1) return false;
s.data[++ s.top] = e;
}
//出栈
int Pop(SqStack &s)
{
if(s.top == -1) return 0;
return s.data[s.top --];
}
//读取栈顶元素
int GetTop(SqStack &s)
{
if(s.top == -1) return false;
return s.data[s.top];
}
//栈的长度
int StackLength(SqStack s)
{
if(s.top == -1) return 0;
return s.top + 1;
}
int main()
{
SqStack s;
InitStack(s);
for(int i = 0; i < 10; i ++)
Push(s, i);
for(int i = 0; i < 10; i ++)
cout << Pop(s) << " ";
cout << endl;
cout << Pop(s) << endl;;
if(StackEmpty) cout<< "空";
else cout << "非空";
return 0;
}