逆波兰数

来源:百度知道 编辑:UC知道 时间:2024/05/27 15:55:49
我想知道逆波兰式在计算机中是怎么运行的。。。。
最好可以举例说明。
给程序就免,我要自己编。

从抽象层面看,将表达式树按后根序遍历就得到逆波兰式。逆波兰式不需要括号。

实际的实现计算的方法是用栈。算法是:
1) 从左向右读入表达式中下一个被操作的数或运算符。
2.1) 若是数,压栈,goto 3。
2.2) 若是运算符,按运算符所需运算数,将栈中元素弹出计算。若遇到栈空,则表达式有误。
3) 若表达式未读完,返回1)。
4.1) 若栈中只剩下一个元素,弹出这个元素,它就是结果。
4.2) 若栈中没有元素或多于一个元素,则表达式有误。

从一般的表达式转为逆波兰式,实现时需要两个栈,一个数字栈,一个运算符栈。此不赘述,可参看相关数据结构的书籍。

参考:
http://db.pku.edu.cn/mzhang/DS/index.htm
http://www.is.pku.edu.cn/~qzy/ds/

逆波兰式是后缀的
a+b => ab+
a+b*c => abc*+
(a+b)*c => ab+c* //注意括号

c*( a + b ) 是一般表达式,也就是中序表达式

.....................--- b
.....................|
......--- + ---- a
......|
* --- C

呵呵,不知道怎么贴图,就这么横着画吧。你把它顺时针旋转90度来看。......表示空格。
这就图就是表达式树,也就是我们怎么把一个表达式放在计算机中表示
叶子节点一定是数字,非叶节点就