这个逆波兰表达式求值的函数,后缀求值错哪里了?帮忙看下谢了
void houzhuiqiuzhi(char a[]){
int i=0;
stack s;
creat(&s);
char str[10];
double d,e;
while(a[i]!='\0')
{
int j=0;
while(a[i]>='0'&&a[i]<='9')
{
str[j++]=a[i]; --------//str缓冲器,对那种两位数的也能存进栈里面,而不是分开存
比如15存15 而不是1 和5
str[j]='\0';
i++;
if(a[i]<='0'||a[i]>='9')
{
d=atof(str);
push(&s,d);
j=0;
break;
}
}
switch(a[i])
{
case '+':
pop(&s,&e);
pop(&s,&d);
push(&s,d+e);
break;
case '-':
pop(&s,&e);
pop(&s,&d);
push(&s,d-e);
break;
case '*':
pop(&s,&e);
pop(&s,&d);
push(&s,d*e);
break;
case '/':
pop(&s,&e);
pop(&s,&d);
if(e!=0)
{
push(&s,d/e);
}
else
{
exit(0);
}
break;
}
i++;
}
pop(&s,&d);
printf("%d",d);
}
[ 本帖最后由 NeQhk 于 2015-5-2 18:39 编辑 ]