中缀表达式算法实现&中缀表达式转后缀表达式
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*+
前缀表达式和后缀表达式分别称为波兰表达式和逆波兰表达式。
计算中缀表达式时,逐个扫描表达式。
扫描时存入两个栈,操作数栈,和运算符栈。
例如 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*+
前缀表达式和后缀表达式分别称为波兰表达式和逆波兰表达式。
相关文章推荐
- C#实现中缀表达式转后缀表达式(RPN)并针对后者进行求值
- C语言 实现中缀表达式转后缀表达式并求值
- 中缀表达式转成后缀表达式 C实现
- 中缀表达式转后缀表达式的实现
- 后缀式与中缀式的恩怨-->中缀表达式转化为后缀表达式
- 栈的应用--后缀表达式和中缀表达式的实现
- 中缀表达式转后缀表达式--C# 代码实现
- 中缀表达式转后缀表达式算法及实现
- 数据结构Java实现06----中缀表达式转换为后缀表达式
- [置顶] 中缀表达式转成后缀表达式(含java实现的具体代码)
- 堆栈实现中缀表达式转后缀表达式及计算表达式的值
- 实现中缀表达式到后缀表达式的转换
- C用栈实现中缀表达式转后缀表达式
- java实现中缀表达式转后缀表达式并且计算
- 利用栈实现中缀表达式转后缀表达式
- 计算器实现---中缀表达式转后缀表达式
- java实现中缀表达式转后缀表达式并且计算
- Java 栈实现中缀表达式转后缀表达式
- 数据结构实现中缀表达式到后缀表达式,再到计算出结果的代码
- java实现中缀表达式转后缀表达式并且计算