#include <stdio.h>
#include <stdlib.h>
#define maxsize 100
typedef int ElemType;
typedef struct {
ElemType* base;
ElemType* top;
int stacksize;
}SqStack;
int InitStack(SqStack& S) {
S.base = (int*)malloc(maxsize * sizeof(int));
if (!S.base)return 0;
S.top = S.base;
S.stacksize = maxsize;
return 1;
}
int StackEmpty(SqStack S) {
if (S.base == S.top)return 1;
return 0;
}
int StackLength(SqStack S) {
return S.top - S.base;
}
int StackClear(SqStack& S) {
if (S.base)S.top = S.base;
return 1;
}
int DestroyStack(SqStack& S) {
if (S.base) {
free(S.base);
S.stacksize = 0;
S.base = S.top = NULL;
}
return 1;
}
int Push(SqStack S, ElemType X) {
if (S.top - S.base == S.stacksize)return 0;
*S.top = X;
S.top++;
}
int Pop(SqStack& S, ElemType& e) {
if (S.base == S.top)return 0;
S.top--;
e = *S.top;
}