顺序栈的操作

栈的定义

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#define MAXSIZE 1000

using namespace std;

//顺序栈
typedef struct
{
int data[MAXSIZE]; //存放栈顶元素
int top; //栈顶指针
}SqStack;

栈的操作

初始化

1
2
3
4
5
6
//初始化顺序栈
bool initStack(SqStack &st)
{
st.top = -1;
return true;
}

判断为空

1
2
3
4
5
6
7
8
//判断栈是否为空
bool isEmpty(SqStack st)
{
if(st.top == -1)
return true;
else
return false;
}

入栈

1
2
3
4
5
6
7
8
9
bool pushStack(SqStack &st, int e)
{
if(st.top == MAXSIZE - 1)
return false; //栈已满,再入栈会上溢
//对于入栈,一定要先改指针再入
st.top++;
st.data[st.top] = e;
return true;
}

出栈

1
2
3
4
5
6
7
8
9
10
11
bool popStack(SqStack &st, int &e)
{
if(st.top == -1)
return false; //栈空不能继续出栈,否则下溢

//对于出栈,先出元素再取指针
e = st.data[st.top];
st.top--;

return true;
}

获取栈顶元素

1
2
3
4
5
6
7
8
//获取栈顶元素
bool getStackTopElem(SqStack st, int &e)
{
if(st.top == -1)
return false; //栈空,无元素返回
e = st.data[st.top];
return true;
}
作者

CairBin

发布于

2021-10-07

更新于

2021-10-10

许可协议

评论