利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg*

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 16:01:17
利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg*

利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg*
利用栈把表达式的中缀表示转换成后缀表示C++
利用栈把表达式的中缀表示转换成后缀表示(逆波兰)
表达式的表示:
中缀:a+b/c-d ==》 后缀:abc/+d-
中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg*+*-

利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg*
#include
struct
{
int op;
double num;
}ret[200];
int topa,topb;
int opstk[200];
int level[200];
double cal(double a,double b,char op)
{
if(op=='+')
return a+b;
if(op=='-')
return a-b;
if(op=='*')
return a*b;
if(op=='/')
return a/b;
}
int main()
{
int i,temp,sign,j,x,y;
char s[200];
level['+']=level['-']=0;
level['*']=level['/']=1;
level['(']=level[')']=2;
while(scanf("%s",s)!=EOF)
{
topa=topb=0;
for(i=0;s[i];i++)
{
if(s[i]=='(')
{
opstk[topa++]='(';
}
else if(s[i]==')')
{
while(topa>0&&opstk[topa-1]!='(')
{
topa--;
ret[topb++].op=opstk[topa];
}
topa--;
}
else if(s[i]=='+'||s[i]=='*'||s[i]=='/')
{
while(topa>0&&opstk[topa-1]!='('&&level[opstk[topa-1]]>=level[s[i]])
{
topa--;
ret[topb++].op=opstk[topa];
}
opstk[topa++]=s[i];
}
else if(s[i]=='-')
{
if((i>0&&s[i-1]=='(')||i==0)
{
sign=-1;
temp=0;
for(j=i+1;s[j]&&s[j]>='0'&&s[j]0&&opstk[topa-1]!='('&&level[opstk[topa-1]]>=level['-'])
{
topa--;
ret[topb++].op=opstk[topa];
}
opstk[topa++]='-';
}
}
else if(s[i]>='0'&&s[i]='0'&&s[j]0)
{
topa--;
ret[topb++].op=opstk[topa];
}
for(i=0;i=0;y--)
if(ret[y].op==-1)
break;
for(x=y-1;x>=0;x--)
if(ret[x].op==-1)
break;
ret[i].num=cal(ret[x].num,ret[y].num,ret[i].op);
ret[i].op=-1;
ret[x].op=0;
ret[y].op=0;
}
}
printf("%.4lf\n",ret[topb-1].num);
}
return 0;
}

利用栈把表达式的中缀表示转换成后缀表示C++利用栈把表达式的中缀表示转换成后缀表示(逆波兰)表达式的表示:中缀:a+b/c-d ==》 后缀:abc/+d- 中缀:a+b/c-d*(e+f*g) ==》后缀:abc/+defg* 表达式求值中缀表达式转换为后缀表达式,并求值,(C语言) 表达式a*(b+C)-d的后缀表达式什么?什么叫中缀和后缀? 求中缀表达式转换为后缀表达式程序 PASCAL 中 前缀表达式与中缀表达式间,以及后缀表达式与中缀表达式间如何实现转换?就是用程序求出 前缀表达式的值,中缀表达式的值以及后缀表达式的值 前缀、中缀、后缀表达式是怎样的? 中缀表达式A-(B+C/D)*E的后缀表达式是什么 数据结构题,中缀表达式A-(B+C/D)*E的后缀表达式是? 中缀表达式A*B*C,后缀表达式是多少.初学者, 中缀表达式转后缀表达式7*(5-6*8)-9怎样转化成后缀表达式——————只要详细说明怎样转换就好了,不要写一段具体转换的程序上来 把中缀表达式转换为后缀表达式的算法我需要用html和javascript实现一个科学计算器的全部功能包括三角函数等常用函数,现在需要有把中缀表达式转换为后缀表达式的方法,希望有具体的解释, 几个后缀中缀 表达式互转 的表达式: 1. 后缀转中缀 24 8 + 3 * 4 10 7 - * / @ 2. 中缀转后缀 A * B * C1. 后缀转中缀 24 8 + 3 * 4 10 7 - * / @ 2. 中缀转后缀 A * B * C ‘中缀表达式’‘和后缀表达式’的英文是什么? 数据结构,如何把一个后缀表达式换为中缀表达式,比如a+b*c+(d*e+f)*g 前缀、中缀、后缀表达式是怎样的?如题 后缀表达式如何转成中缀表达式?是后转中!我知道后缀表达式如何计算出具体的数字,但是怎么把它转成中缀表达式呢?做填空题用,所以最好要能笔算的, 中缀表达式3 + 4/(25 -(6+15))* 8转换为后缀表达式 中缀表达式为:5*x-3+b/x^2 的前缀 后缀表达式分别是什么?a+b*c/d 的前缀 后缀呢?