关于顺序栈程序中的一个realloc得语法问题

来源:百度知道 编辑:UC知道 时间:2024/06/13 10:48:27
struct Stack
{
int *base;
int *top;
int stacksize;
};

int initstack(struct Stack &s)
{
s.base=(int*)malloc(100*sizeof(int));
if(!s.base)exit(-2);
s.top=s.base;
s.stacksize=100;
return 1;
}

int Gettop(struct Stack s,int &e)
{
if(s.base==s.top)return 0;
e=*(s.top-1);
return 1;
}

int Push(struct Stack &s,int e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(int*)realloc(s.base,(s.stacksize+STACKINCREMENT) * sizeof(int));
if(!s.base)exit(-2);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top=e;
s.top++;
return 1;
}

void main()
{
struct Stack s;
initstack(s);
}
这个程序编译不能通过,显示错误是:
error C2143: syntax error : missing ')' before ';'
: error C2143: syntax error : missing ')' before ';'
: e

s.base=(int*)realloc(s.base,(s.stacksize+STACKINCREMENT) * sizeof(int));
这句话分成两步写!估计是运算符优先级的问题。
改成:
s.stacksize += STACKINCREMENT;
s.base=(int*)realloc(s.base,s.stacksize * sizeof(int));
这样就行了

不是提示有一个括好掉拉吗 在找找error C2143: syntax error : missing ')' before

问题是主函数没有调用那些函数,有些时候就会导致这种问题,你只开辟了一个栈,接下来你要做些什么呢?开辟站用得着后面的函数吗?你试试改改看!我也在学数据结构。。。。