#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 10
typedef int Status;
typedef char SElemType;
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; //初始化栈顶指针为栈底指针,表示栈空
S.stacksize = MAXSIZE; //stacksize表示栈的最大容量
return OK;
}
int StackEmpty (SqStack S)
{
return (S.top == S.base); //栈顶指针等于栈底指针时,即为栈空
}
Status Push (SqStack &S, SElemType e)
{
if(S.top - S.base == S.stacksize) //入栈要判满
return ERROR;
*S.top++ = e; //入栈,元素压入栈顶,栈顶指针+1
return OK;
}
Status Pop (SqStack &S, SElemType &e)
{
if(S.top