一、定义
#define MAXSIZE 50
#define elemtype int
typedef struct {
elemtype data[MAXSIZE];
int top;
}SqStack;
二、初始化
void InitStack(SqStack &S)
{
S.top = -1;
}
三、栈判空
bool StackEmpty(SqStack S)
{
if (S.top == -1)
return true;
else
return false;
}
四、进栈
bool Push(SqStack& S, elemtype x)
{
if (S.top == MAXSIZE - 1)
return false;
S.data[++S.top] = x; //指针先加1,再入栈
return true;
}
- 适用于初始 top = -1的栈,初始 top =0 需要先入栈,指针再加1。
五、出栈
bool Pop(SqStack& S, elemtype& x)
{
if (S.top == -1)
return false;
x = S.data[S.top--]; //先出栈,指针再减1
return true;
}
六、读栈顶元素
bool GetTop(SqStack& S, elemtype& x)
{
if (S.top == -1)
return false;
x = S.data[S.top];
return true;
}