#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define SElemType int
#define Status int
#define OVERFLOW -2
#define OK 1
#define ERROR -1
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;
return OK;
}
//入栈
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==S.base)
return ERROR;
e=*--S.top;//先等于,后赋值给e
return OK;
}
//获取栈顶元素
Status GetTop(SqStack S)
{
if(S.top!=S.base)
return *(S.top-1);//返回栈顶元素的值,栈顶指针不变
}
int main()
{
int a;
SqStack S;
InitStack(S);
Push(S,3);//存进第一个数3
Push(S,4);//存进第二个数4
Pop(S,a);//出栈
printf("%d\n",a);//输出
a=GetTop(S);//获取栈顶元素
printf("%d\n",a);//输出
return 0;
}