栈的定义
#include <iostream>
#define MAXSIZE 1000
using namespace std;
//顺序栈
typedef struct
{
int data[MAXSIZE]; //存放栈顶元素
int top; //栈顶指针
}SqStack;
栈的操作
初始化
//初始化顺序栈
bool initStack(SqStack &st)
{
st.top = -1;
return true;
}
判断为空
//判断栈是否为空
bool isEmpty(SqStack st)
{
if(st.top == -1)
return true;
else
return false;
}
入栈
bool pushStack(SqStack &st, int e)
{
if(st.top == MAXSIZE - 1)
return false; //栈已满,再入栈会上溢
//对于入栈,一定要先改指针再入
st.top++;
st.data[st.top] = e;
return true;
}
出栈
bool popStack(SqStack &st, int &e)
{
if(st.top == -1)
return false; //栈空不能继续出栈,否则下溢
//对于出栈,先出元素再取指针
e = st.data[st.top];
st.top--;
return true;
}
获取栈顶元素
//获取栈顶元素
bool getStackTopElem(SqStack st, int &e)
{
if(st.top == -1)
return false; //栈空,无元素返回
e = st.data[st.top];
return true;
}