求高手指导下这段代码的报错!
#include<stdio.h>#include<stdlib.h>
typedef struct{
int *base;
int *top;
int stacksize;//栈当前分配的总空间
}Stack;
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
#define OK 1;
#define OVERFLOW 0;
#define ERROR -1;
void INIT_STACK(Stack &S);
void INSERT_STACK(Stack &S,int e);
int Pop(Stack &S,int &e);
int main()
{
Stack S1;
INIT_STACK(S1);
INSERT_STACK(S1,1);
INSERT_STACK(S1,2);
INSERT_STACK(S1,3);
int i;
int a;
for(i=0;i<3;i++)
{
Pop(S1,a);
printf("%d",a);
}
return 0;
}
//创建一个空的栈
void INIT_STACK(Stack &S)
{
S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));//初始化空间
if(!S.base) exit(OVERFLOW);//初始化空间失败
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}
//在栈中插入一个元素
void INSERT_STACK(Stack &S,int e)
{
if((S.top-S.base)>=S.stacksize)//栈满了
{
S.base=(int *)realloc(S.base,(S.stacksize+STACKINCEMENT)*sizeof(int));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top=e;
S.top++;
}
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR;
int Pop(Stack &S,int &e)
{
if(S.base==S.top) return ERROR;
e=*--S.top;
return OK;
}