顺序栈的表示
#define MAXSIZE 100
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
栈中元素个数 = top-base
顺序栈的初始化,判断是否为空,求栈长,清空,销毁。
Status InitStack(SqStack &S){
S.base = new SElemType[MAXSIZE];
//S.base = (SElemType*)malloc(MAXSIZE*sizeof(SElemType));
if(!S.base) exit(OVERFLOW);
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}//初始化
Status StackEmpty(SqStack S){
if(S.base == S.top)
return TRUE;
else
return FALSE;
}//判断是否为空栈
int StackLength(SqStack S){
return S.top - S.base;
}//求栈的长度
Status ClearStack(SqStack S){
if(S.base) S.top = S.base;
return OK;
}//清空
Status DestroyStack(SqStack &S){
if(S.base){
delete S.base;
S.stacksize = 0;
S.base = S.top = NULL;
}
return OK;
}//销毁
顺序栈的入栈
先对top指针所指位置赋值,再将top++
Status Push(SqStack &S,SElemType e){
if(S.top - S.base == S.stacksize)
return ERROR;
else{
*S.top = e;//取top所指的位置进行赋值
S.top++;
}
return OK;
}//顺序栈的入栈
顺序栈的出栈
先将top--,再取得top指针所指的值
Status Pop(SqStack &S,SElemType &e){
if(S.top == S.base)
return ERROR;
else{
S.top--;
e = *S.top;
}
return OK;
}//顺序栈的出栈