步骤
1、初始化栈
先定义一个栈
#define MaxSize 50
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];//数组
int top;//始终指向栈顶的一个变量
}SqStack;
然后再把栈初始化,只要把栈顶变成-1即可
void InitStack(SqStack& S)
{
S.top = -1;//代表栈为空
}
2、判断栈是否为空
写一个bool函数就可以了
bool StackEmpty(SqStack& S)
{
if (S.top == -1)
return true;
else
return false;
}
3、入栈
这是一个元素入栈的情况,这里的S.data[++S.top] = x;等价于S.top = S.top + 1;S.data[S.top = x]。
bool Push(SqStack& S, ElemType x)
{
if (S.top == MaxSize - 1)//数组的大小不能改变,避免访问越界
{
return false;
}
S.data[++S.top] = x;
return true;
}
4、获取栈顶元素
bool GetTop(SqStack& S, ElemType& x)
{
if (-1 == S.top)//说明栈为空
return false;
x = S.data[S.top];
return true;
}
5、出栈
bool Pop(SqStack& S, ElemType& x)
{
if (-1 == S.top)
return false;
x = S.data[S.top--];//后减减,x=S.data[S.top];S.top=S.top-1;
return true;
}
一定要注意栈是否为空的判断。