#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#define ElemType int
#define stacksizemax 100
#define increase 10
#define OK 0
#define ERROR 1
#define OVERFLOW 1
typedef struct
{
ElemType *top;
ElemType *base;
int stacksize;
}Sq;
int InitStack(Sq &S)
{
S.base= (ElemType *)malloc (stacksizemax*sizeof (ElemType));
if(!S.base) exit (OVERFLOW);
S.top= S.base;
S.stacksize= stacksizemax;
returnOK;
}
int Push(Sq &S, ElemType e)
{
if (S.top-S.base>=S.stacksize) //栈满
{
S.base=(ElemType *)realloc(S.base,(S.stacksize+increase)* sizeof(ElemType));
if (!S.base)
exit (OVERFLOW);
S.top = S.base + S.stacksize;
S.stacksize+=increase;
} // if
*S.top++ = e;
return OK;
} //Push
int Pop(Sq&S, ElemType&e) {
if(S.top == S.base)
return ERROR;
e = * (-- S.top);
printf("%d",e);
return OK;
}//Pop
int main()
{
Sq S;
InitStack(S);
ElemType e=5;
Push(S,e);
Pop(S,e);
return 0;
}