#include <stdio.h>
#include <stdlib.h>
//预定义常量和类型
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define STACK_INIT_SIZE 100 //存储空间分配量
#define STACKINCREMENT 10 //存储空间分配增量
typedef Status;
typedef int SElemType;
typedef struct{
SElemType *base; //在构造之前和销毁之后,base的值为NULL
SElemType *top; //栈顶指针
int stacksize; //当前已分配的存储空间,以元素为单位
}SqStack;
//构造一个空栈
Status InitStack(SqStack *S)
{
S->base = (SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S->base) exit(OVERFLOW); //分配失败
S->top = S->base;
S->stacksize = STACK_INIT_SIZE;
return OK;
}
//入栈
Status Push(SqStack *S,SElemType e)
{
//插入元素e为新的栈顶元素
//栈满追加存储空间
if(S->top