您的位置:首页 > 其它

中缀表达式算法实现&中缀表达式转后缀表达式

2017-10-30 20:05 176 查看
中缀表达式,即运算符在操作数中间。

计算中缀表达式时,逐个扫描表达式。

扫描时存入两个栈,操作数栈,和运算符栈。

例如   3*2^(4+2*2-1*3)-5 

扫描表达式。

操作数栈以 栈$表示,运算符栈以 栈¥表示。

扫描开始:

栈$进3  ,栈¥进*  , 栈$进2 ,栈¥进^ ,栈¥进(,栈$进4 , 栈¥进+ , 栈 $进2 , 栈¥进*  ,栈$进2,

接下来由于 - 减号运算符优先级低于 * ,所以 *出栈进行运算, 操作数也出栈参与运算,完成后将结果进栈$。   此处* 和 ,+均出栈,并将运算符 -进栈 

栈$进1 , 栈¥进* , 栈$进3 

接下来由于)运算符低于任意运算符(匹配到‘(’为止 ),将 - 出栈 。(出栈 。

再接下来由于 - 号 优先级低于 ^与 *, 则将这两个运算符出栈。 最后进行减号运算。

中缀表达式变后缀表达式:

过程与中缀计算类似 。只不过从操作符栈中出栈并进行运算 变成了 将操作符进入操作数栈。

例如: 中缀表达式为,a+b*c+(d*e+f)*g  

后缀表达式为 , abc*+de*f+g*+

前缀表达式和后缀表达式分别称为波兰表达式和逆波兰表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: