写栈的实现的过程中遇到的问题
我在写用栈实现二叉树的非递归算法,在编译的过程中提示一下两条语句有问题:
void Push(SqStack S, SElemType *e)
{
if(S.top - S.base >= S.stacksize)
{
S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType)); // 这里!!!!!!!!!!!!
if(!S.base)exit(ERROR);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = *e;
}
void InitStack(SqStack S)
{
S.base = ( SElemType * )malloc( STACK_INIT_SIZE * sizeof( SElemType ) );//这里!
if(!S.base)exit(ERROR);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
}
错误提示如下:
error C2143: syntax error : missing ')' before ';'
error C2059: syntax error : ')'
error C2100: illegal indirection
error C2143: syntax error : missing ')' before ';'
error C2143: syntax error : missing ')' before ';'
error C2059: syntax error : ')'
error C2059: syntax error : ')'
error C2100: illegal indirection
可能是昨天没有睡好,怎么都想不出哪里错了。望大家帮帮忙看看。下面是栈的实现部分的全部代码:
#define STACK_INIT_SIZE 100; // 存储空间初始分配量
#define STACKINCREMENT 10; // 存储空间分配增量
typedef BiTNode SElemType; // 树的节点类型
typedef struct Stack { // 定义栈结构
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
// 初始化栈S,分配存储空间并置为空
void InitStack(SqStack S)
{
S.base = ( SElemType * )malloc( STACK_INIT_SIZE * sizeof( SElemType ) );
if(!S.base)exit(ERROR);
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
}
// 清空栈
void ClearStack(SqStack S)
{
S.top = S.base;
}
//检查栈是否为空
bool StackEmpty(SqStack S)
{
if(S.top == S.base)
{
return TRUE;
}
else
return FALSE;
}
//读取栈顶元素
int GetTop(SqStack S, SElemType *e)
{
if(S.top != S.base)
{
*e = *(S.top - 1);
return OK;
}
else
return ERROR;
}
//向栈中插入元素
void Push(SqStack S, SElemType *e)
{
if(S.top - S.base >= S.stacksize)
{
S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT)*sizeof(SElemType));
if(!S.base)exit(ERROR);
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top++ = *e;
}
//从栈中删除元素
int Pop(SqStack S, SElemType *e)
{
if(S.top != S.base)return ERROR;
*e = *--S.top;
return OK;
}