顺序栈的存储结构
#define MAXSIZE 100
typedef struct
{
SElemType *base; //始终指向基地址
SElemType *top; //当栈非空时,指向栈顶元素的上一个位置
int stacksize;
}SqStack;
初始化
Status InitStack(SqStack *S)
{
/*
S->base = (SElemType *)malloc(MAXSIZE * sizeof(SElemType));
*/
S->base = new SElemType[MAXSIZE];
if(!S->base)
return ERROR;
S->top = S->base;
S->stacksize = MAXSIZE;
return OK;
}
入栈
Status Push(SqStack *S, SElemType e)
{
//S->top - S->base为栈中元素的个数
if(S->top - S->base == S->stacksize)
return ERROR;
*(S->top) = e;
S->top++
}
出栈
Status Push(SqStack *S, SElemType *e)
{
//说明栈中没有元素
if(S->top == S->base)
return ERROR;
*e = *(S->top);
S->top--;
return OK;
}