中缀表达式A+(B-C/D)*E 转换成python 后缀表达式式,并写出详细过程(包括()+ - * /的优先级)!

 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
数据结构-C语言描述(本科)第3章
下载积分:2000
内容提示:数据结构-C语言描述(本科)第3章,数据结构 c语言描述,数据结构c语言版,c语言数据结构,数据结构 使用c语言,c语言的数据结构,c语言数据结构 答案,算法精解 c语言描述,c语言描述,c语言第二章作业
文档格式:PDF|
浏览次数:1|
上传日期: 08:44:59|
文档星级:
该用户还上传了这些文档
下载文档:数据结构-C语言描述(本科)第3章.PDF
官方公共微信中缀转后缀表达式_百度知道
中缀转后缀表达式
缀式A*-B+C转换缀式
我有更好的答案
按默认排序
首先要明白缀表达式缀表达式缀表达式二元操作符写两操作数间比x + y所叫缀操作符+位于两操作数x与y间缀表达式操作符写操作数比x y +所叫缀明白缀与缀意思要各操作符优先级弄清楚给表达式根据代数优先级加括号应该(A * (- B)) + C转缀表达式容易外面操作符号始右往左先写操作符写操作数:第步:+第二步: C +第三步: * C +第四步:- * C +第五步:B - * C +第六步:A B - * C +注意面我先写右边操作数选择先写左边操作数留给作练习吧
其他类似问题
后缀表达式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁一个将中缀表达式转换为前缀表达式的算法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
2页¥1.003页免费5页2下载券2页免费5页免费4页免费2页1下载券2页2下载券2页免费5页1下载券
喜欢此文档的还喜欢5页免费2页免费2页免费19页免费4页免费
一个将中缀表达式转换为前缀表达式的算法|
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢中缀表达式转后缀表达式
中缀表达式转后缀表达式
中缀表达式a + b*c + (d * e + f) *
g,其转换成后缀表达式则为a b c * + d e * f &+ g * +。
转换过程需要用到栈,具体过程如下:
1)如果遇到操作数,我们就直接将其输出。
2)如果遇到操作符,则我们将其放入到栈中,遇到左括号时我们也将其放入栈中。
3)如果遇到一个右括号,则将栈元素弹出,将弹出的操作符输出直到遇到左括号为止。注意,左括号只弹出并不输出。
4)如果遇到任何其他的操作符,如(“+”,
“*”,“(”)等,从栈中弹出元素直到遇到发现更低优先级的元素(或者栈为空)为止。弹出完这些元素后,才将遇到的操作符压入到栈中。有一点需要注意,只有在遇到"
) "的情况下我们才弹出" ( ",其他情况我们都不会弹出" ( "。当然按照优先级数组来说也是很正常的。
5)如果我们读到了输入的末尾,则将栈中所有元素依次弹出。
bool Decide(char c);
char Precede(char a,char b);
char SwitchPrecede(stack &tempS,char
int main()
cout&&"the end of your input should
tempS;//临时存放操作符
& & int temp = 0;
& & c = getchar();
& & tempS.push('#');
& & while(true)
& &if(temp!=0)
& if(Decide(c))
if(c==')')
& & while(tempS.top()!='(')
cout&&tempS.top();
& tempS.pop();
& & tempS.pop();//去除左括号
& & c=getchar();
if(tempS.top()=='#')
& & tempS.push(c);
& & & else
if(c!='#')
& & SwitchPrecede(tempS,c);
if(c&='0'&&c&='9')
& & & temp =
temp*10+c-'0';
& if(c=='#')
while(tempS.top()!='#')
cout&&tempS.top();
& & tempS.pop();
& c = getchar();
& & return 0;
bool Decide(char c)
&if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#')
char Precede(char a,char b)
& & int j[2];
& & char table[7][7]=
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','&','&'},
{'&','&','&','&','&','=','e'},
{'&','&','&','&','e','&','&'},
{'&','&','&','&','&','e','='}
& & for(int
i=0;i&2;i++)
& if(i==0)
& & & c=a;
& else if(i==1)
& & & c=b;
& switch(c)
& & case '+':j[i]=0;
& & case '-':j[i]=1;
& & case '*':j[i]=2;
& & case '/':j[i]=3;
& & case '(':j[i]=4;
& & case ')':j[i]=5;
& & case '#':j[i]=6;
& & return
table[j[0]][j[1]];
char SwitchPrecede(stack &tempS,char
switch(Precede(tempS.top(),c))
& case '&':
& case '=':
cout&&tempS.top();
tempS.pop();
SwitchPrecede(tempS,c);//递归
& case '&':
tempS.push(c);
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 中缀表达式求值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信