栈
顺序存储
顺序存储结构
#define MAXSIZE 100
typedef struct{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
初始化
Status InitStack(SqlStack &S){
S.base=new SElemType[MAXSIZE]; //为顺序存储分配一个容量为MAXSIZE的数组空间
if(!S.base) exit(OVERFLOW); //存储分配失败
S.top=S.base; //top初始为base,空栈
S.stacksize=MAXSIZE; //stacksize置为栈的最大容量MAXSIZE
return OK;
}
入栈
Status Push(SqStack &S,SElemType e){
//插入元素e为新的栈顶元素
if(S.top-S.base==S.stacksize) //栈满
return ERROR;
*S.top++=e; //将元素e压入栈顶,栈顶指针加一
//*S.top=e; *S++;
return OK;
}
出栈
Status Pop(SqStack &S,SElemType e){
//删除S的栈顶元素 用e返回其值
if(S.top==S.base) //栈空
return ERROP;
e=*--S.top; //栈顶指针减1,将栈顶元素赋给e
return OK;
}
取栈顶元素
SElemType GetTop(SqStack S){
//返回S的栈顶元素 不修改栈顶指针
if(S.top!=S.base) //栈非空
return *(S.top-1); //返回栈顶元素
}