//顺序栈的初始化,入栈,出栈,取栈顶元素。
#define MAXSIZE 100
typedef struct
{
SElemType *base;//栈底指针
SElemType *top;//栈顶指针
int stacksize;
}SqStsck;
//初始化
Status InitStack(SqStack &S)
{
S.base=new a[MAXSIZE];//为顺序栈分配一个最大容量为MAXSIZE的存储空间
if(!S.base) return OVERFLOW;
S.top=S.base;//栈顶指针与栈底指针相等,栈为空栈。
S.stacksize=MAXSIZE;//栈的容量等于数组的最大容量。
}
//入栈
Status Push(SqStack &S,SElemType e)
{
if(S.top-S.base==stacksize) return error;//入栈前判断栈是否满,栈的首尾(指针可以相加减)相减得到当前的栈长。
*S.top=e;//新的数据元素入栈
S.top++;//栈顶指针+1
}
//出栈
Status Pop(SqStack &S,SElemType &e)
{
if(S.top==S.base) return error;//出栈前判断栈是否为空
S.top--;//栈顶指针-1;
e=*S.top;//返回栈顶元素的值。
}
//取栈顶元素
SElemType GetTop(SqStack S)
{
if(S.top==S.base) return error;//取栈顶元素前判断栈是否为空
return *(S.top-1);//栈顶元素出栈,栈顶指针不变
}
顺序栈受到最大空间容量的限制,解决方法:1:报错。2:重新分配空间扩大容量。3:换用链栈··