为什么出现missing ')' before ';'的错误
错误出现在s.base=(char*)malloc(MAXSIZE*sizeof(char));处,一共有三个。我刚刚接触数据结构,这是我同学的一个大作业我不会改请高手帮帮忙啦!!!
知道这个程序有很多缺点请大家不要见笑。帮忙改改,谢谢大家!!!
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20;
typedef struct{
char *base;
char *top;
int stacksize;
}Sqstack;
Sqstack Initstack(Sqstack s)
{
s.base=(char*)malloc(MAXSIZE*sizeof(char));//错误提示的地方
s.top=s.base;
s.stacksize=MAXSIZE;
return s;
}
Sqstack Push(Sqstack s,char e)
{
*s.top++=e;
//s.top=(char *)malloc(sizeof(char));
return s;
}
char Pop(Sqstack s,char e)
{
e=*(--s.top);
return e;
}
char GetTop(Sqstack s)
{
return *(--s.top);
}
int Precede(char e1,char e2)
{
int a;
if(e1='+')
{
switch(e2)
{
case'+': a=1; break;
case'-': a=1; break;
case'*': a=-1; break;
case'/': a=-1; break;
case'(': a=-1; break;
case')': a=1; break;
case'#': a=1; break;
}
}
else if(e1='-')
{
switch(e2)
{
case'+': a=1; break;
case'-': a=1; break;
case'*': a=-1; break;
case'/': a=-1; break;
case'(': a=-1; break;
case')': a=1; break;
case'#': a=1; break;
}
}
else if(e1='*')
{
switch(e2)
{
case'+': a=1; break;
case'-': a=1; break;
case'*': a=1; break;
case'/': a=1; break;
case'(': a=-1; break;
case')': a=1; break;
case'#': a=1; break;
}
}
else if(e1='/')
{
switch(e2)
{
case'+': a=1; break;
case'-': a=1; break;
case'*': a=1; break;
case'/': a=1; break;
case'(': a=-1; break;
case')': a=1; break;
case'#': a=1; break;
}
}
else if(e1='(')
{
switch(e2)
{
case'+': a=-1; break;
case'-': a=-1; break;
case'*': a=-1; break;
case'/': a=-1; break;
case'(': a=-1; break;
case')': a=0; break;
}
}
else if(e1=')')
{
switch(e2)
{
case'+': a=1; break;
case'-': a=1; break;
case'*': a=1; break;
case'/': a=1; break;
case')': a=1; break;
case'#': a=1; break;
}
}
else if(e1='#')
{
switch(e2)
{
case'+': a=-1; break;
case'-': a=-1; break;
case'*': a=-1; break;
case'/': a=-1; break;
case'(': a=-1; break;
case'#': a=0; break;
}
}
return a;
}
int operate(int a,char theta,int b)
{
int c;
switch(theta)
{
case'+': c=a+b; break;
case'-': c=a-b; break;
case'*': c=a*b; break;
case'/': c=a/b; break;
}
return c;
}
int main(void)
{
char a,b,c;
char x,theta;
int z,sum;
Sqstack OPTR,OPND;
OPTR=Initstack(OPTR);
OPTR=Push(OPTR,'#');
OPND=Initstack(OPND);
c=getchar();
while(c!='#'||GetTop(OPTR)!='#')
{
if(c>='0'&&c<='9')
{
OPND=Push(OPND,c);
c=getchar();
}
else
{
switch(Precede(GetTop(OPTR),c))
{
case'-1':
Push(OPTR,c); c=getchar();
break;
case'0':
Pop(OPTR,x); c=getchar();
break;
case'1':
theta=Pop(OPTR,theta); c=getchar();
OPND=Push(OPND,c);
b=Pop(OPND,b); a=Pop(OPND,a);
z=operate('a'-'0',theta,'b'-'0');
Push(OPND,z+'0'); c=getchar();
break;
}
}
}
sum=GetTop(OPND)-'0';
printf("表达式的值为: %d",sum);
return 0;
}