波兰表示法与逆波兰表示法(前缀、中缀、后缀表达式)
2016-07-11 22:15
316 查看
1、为什么要把中缀表达式转化为后缀,前缀?
计算机没法计算带有括号,以及区分优先级的表达式,或者说很难计算。使用后缀,前缀,消除了括号和优先级。
2、计算机如何计算后缀,前缀表达式?
计算后缀:从左到右遍历后缀表达式,遇到操作数,放进栈,遇到操作符,栈顶两个数出栈,进行运算,运算结果放进栈,直到读完后缀表达式。
计算前缀:从左到右遍历前缀表达式,遇到操作符,放进栈,遇到操作数,查看栈顶,栈顶为操作符,放进栈,栈顶为操作数,取出栈顶操作数和操作符,进行运算,运算后继续判断栈顶的情况。
3、中缀表达式如何转化为后缀,前缀表达式?
转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于等于当前操作符的操作符,当前操作符进栈。
转化为前缀:从右到左遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于等于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于当前操作符的操作符,当前操作符进栈。
转自:http://www.cnblogs.com/nzbbody/p/3335226.html
算法实现:http://blog.csdn.net/beiyetengqing/article/details/8066568
算法实现:http://blog.csdn.net/antineutrino/article/details/6763722
计算机没法计算带有括号,以及区分优先级的表达式,或者说很难计算。使用后缀,前缀,消除了括号和优先级。
2、计算机如何计算后缀,前缀表达式?
计算后缀:从左到右遍历后缀表达式,遇到操作数,放进栈,遇到操作符,栈顶两个数出栈,进行运算,运算结果放进栈,直到读完后缀表达式。
计算前缀:从左到右遍历前缀表达式,遇到操作符,放进栈,遇到操作数,查看栈顶,栈顶为操作符,放进栈,栈顶为操作数,取出栈顶操作数和操作符,进行运算,运算后继续判断栈顶的情况。
3、中缀表达式如何转化为后缀,前缀表达式?
转化为后缀:从左到右遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于等于当前操作符的操作符,当前操作符进栈。
转化为前缀:从右到左遍历中缀表达式,遇到操作数,输出,遇到操作符,当前操作符的优先级大于等于栈顶操作符优先级,进栈,否则,弹出栈顶优先级大于当前操作符的操作符,当前操作符进栈。
转自:http://www.cnblogs.com/nzbbody/p/3335226.html
算法实现:http://blog.csdn.net/beiyetengqing/article/details/8066568
算法实现:http://blog.csdn.net/antineutrino/article/details/6763722
相关文章推荐
- JSP自定义标签之Hello Costom tag小例子
- CentOS6 彻底关闭IPv6
- 关于sql 查询时的 字段拼接
- Rnqoj (未出现的子串)
- codeforces 690D1 D1. The Wall (easy)(dfs)
- 7月11号面试心得
- 后缀表达式求值
- C语言培训_006
- Hash, MAC,HMAC
- linux下使用select实现精确定时器
- Delphi 使用双缓冲解决图片切换时的闪烁问题 good
- css小记
- C++ 类模板二(类模版与友元函数)
- Java正则表达式细节1
- iOS 10 新特性
- CodeForces 548B Mike and Fun
- POJ 1416 DFS
- 一个web项目web.xml的配置中<context-param>配置作用
- POJ 1416 DFS
- Integer.parseInt() 和 valueOf()