前缀式(波兰式)与后缀式(逆波兰式)求解表达式的值,中缀式(一般算数表达式不做讨论)
来源:互联网 发布:python快速注释快捷键 编辑:程序博客网 时间:2024/04/29 08:14
波兰式
表达“三加四”时,前缀记法写作“+ 3 4”,而不是“3 + 4”。在复杂的表达式中,操作符仍然在操作数的前面,但操作数可能是包含操作符的平凡表达式。例如,如下的中缀表达式:
- (5 − 6) * 7
写作前缀表示法时是:
- *(− 5 6) 7
或省略括号:
- * − 5 6 7
由于简单的算术运算符都是二元的,该前缀表达式无需括号,且表述是无歧义的。在前面的例子里,中缀形式的括号是必需的,如果将括号移动到:
- 5 − (6 * 7)
即:
- 5 − 6 * 7
则会改变整个表达式的值。而其正确的前缀形式是:
- − 5 * 6 7
- 算法求解为:
- 1、遍历波兰式,当遇到操作符时不做处理:继续遍历遇到连续两个操作数时,取前面的操作符求值,构建新的波兰式。接着遍历完整个波兰式。
- 2、再接着遍历波兰式直到波兰式只有一个操作数为止,该操作数就是我们要求的波兰式的值。
- 过程如下:
- * − 5 6 7
- *(-1)7
- -7
- − 5 * 6 7
- - 5 42
- 37
逆波兰式(后缀式)
逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子:正常的表达式 逆波兰表达式a+b ---> a,b,+a+(b-c) ---> a,b,c,-,+a+(b-c)*d ---> a,b,c,-,d,*,+a+d*(b-c)--->a,d,b,c,-,*,+a=1+3 ---> a=1,3 +http=(smtp+http+telnet)/1024 写成什么呢?http=smtp,http,+,telnet,+,1024,/规律:操作数在前,操作符在后,并且要看优先规律;算法:由逆波兰式求表达式的值:中缀表达式“5 + ((1 + 2) * 4) − 3”写作
- 5 1 2 + 4 * + 3 −
下表给出了该逆波兰表达式从左至右求值的过程,堆栈栏给出了中间值,用于跟踪算法。(一个栈来模拟,1,栈遇到操作数就入栈,2、遇到操作符就弹出两个操作数进行运算,3、运算结果再压入栈顶。直到遍历完整个逆波兰式(后缀式))。
输入 操作 堆栈 注释 5入栈51入栈5, 12入栈5, 1, 2+加法运算5, 3(1, 2)出栈;将结果(3)入栈4入栈5, 3, 4*乘法运算5, 12(3, 4)出栈;将结果(12)入栈+加法运算17(5, 12)出栈;将结果 (17)入栈3入栈17, 3−减法运算14(17, 3)出栈;将结果(14)入栈计算完成时,栈内只有一个操作数,这就是表达式的结果:14
参考<a href="http://zh.wikipedia.org/wiki/逆波兰表示法">维基百科</a>,和<a href="http://baike.baidu.com/view/552648.htm">百度百科</a>.
0 0
- 前缀式(波兰式)与后缀式(逆波兰式)求解表达式的值,中缀式(一般算数表达式不做讨论)
- 与树相关的--前缀表达式,中缀表达式,后缀表达式(逆波兰式)
- 逆波兰式(中缀表达式转成后缀表达式)
- 中缀表达式转后缀表达式(逆波兰式)
- 【数据结构】中缀表达式转换后缀表达式(逆波兰式)
- 中缀表达式转后缀表达式(又称逆波兰式)
- 将中缀表达是转换为后缀表达式(逆波兰式)的一般算法
- 后缀表达式(逆波兰式)、中缀表达式的转换与求值
- 中缀表达式转后缀表达式(逆波兰式)的C++代码
- 波兰表示法与逆波兰表示法(前缀、中缀、后缀表达式)
- 前缀 中缀 后缀 波兰式 逆波兰式
- 前缀 中缀 后缀 波兰式 逆波兰式
- 逆波兰式(后缀表达式)
- NYOJ-35-表达式求值(中缀式转后缀式 逆波兰表达式)
- 将中缀表达式转化成后缀表达式(逆波兰式)
- 逆波兰式、中缀表达式后缀表达式的总结与例题
- 求解逆波兰表达式(前缀表达式)
- 逆波兰式(后缀表达式)的表达求值
- [转]Java中常用的加密方法(JDK)
- 算法实验 层序列表问题(二叉树)
- C# webBrowser 获取框架内Html页面内容
- JVM如何理解Java泛型类
- 首个app应用程序上架,留个纪念。
- 前缀式(波兰式)与后缀式(逆波兰式)求解表达式的值,中缀式(一般算数表达式不做讨论)
- Java中的泛型方法
- GoodJob(找工作助手/辅助决策)的帮助
- 关于网页中的meta标签
- 找工作助手GoodJob
- Scala学习之一---基础篇
- Java加密和数字签名编程快速入门
- URAL-1941 Scary Martian Word 队列维护
- android设置全屏