顺序栈的定义
#define MAXSIZE 100
typedef struct
{
SElemType* base;//栈底指针
SElemType* top;//栈顶指针
int stacksize;
}SqStack;
顺序栈的初始化
Status InitStack(SqStack &S)
{
S.base = new SElemType[MAXSIZE];
if (S.base!) exit(OVERFLOW);
S.top = S.base; //top初始化为base,空栈
S.stacksize = MAXSIZE;
return OK;
}
判断顺序栈是否为空
int StackEmpty(SqStack S)
{
if (S.top == S.base)
return True;
else return False;
}
求顺序栈的长度
int StackLength(SqStack S)
{
return S.top - S.base;
}
清空顺序栈
Status ClearStack(SqStack S)//注意为S就可以
{
if (S.base)
S.top = S.base;
return OK;
}
销毁顺序栈
Status DestroyStack(SqStack& S)
{
if (S.base)
{
delete S.base;
S.stacksize = 0;
S.top = S.base = NULL;
}
return OK;
}
入栈
Status Push(SqStack& S, ElemType e)
{
if (S.top - S.base == S.stacksize) return ERROR;
*S.top++ = e; //*S.top=e; S.top++;
return OK;
}
出栈
Status Pop(SqStack& S, ElemType &e)
{
if (S.top - S.base == S.stacksize) return ERROR;
e = *-- S.top; // --S.top; e=S.top;
return OK;
}