上回讲了如何计算后缀表达式,其实真正的难点在于如何将一个正常的字符串表达式(中缀表达式)变成一个后缀表达式。如将6 * ( 5 + ( 2 + 3) * 8 + 3)变为6 5 2 3 + 8 * + 3 + * 逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子:...
分类:
编程语言 时间:
2014-09-11 15:26:03
阅读次数:
229
问题来由: 读入一个字符串形式的四则运算表达式,输出对应的计算结果。如读入的是“6 * ( 5 + ( 2 + 3) * 8 + 3)”,那么解析后的输出结果应为288。 思路: 一般的计算过程是这样的,首先计算优先级最高的小括号里面的内容,即“( 5 + ( 2 + 3) * 8 + 3)”, 将“2 + 3”的计算结果并存为A,接着用计算“A*8”,并存为B 计算“5+...
分类:
编程语言 时间:
2014-09-10 17:53:40
阅读次数:
189
一个表达式E的逆波兰形式可以如下定义:(1)如果E是一个变量或常量,则E的后缀式是E本身。(2)如果E是E1opE2形式的表达式,这里op是如何二元操作符,则E的后缀式为E1'E2'op,这里E1'和E2'分别为E1和E2的后缀式。(3)如果E是(E1)形式的表达式,则E1的后缀式就是E的后缀式。(...
分类:
其他好文 时间:
2014-09-09 11:40:58
阅读次数:
241
【题意】
逆波兰表达式,又叫后缀表达式。
例如:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
【思路】
用一个栈存储操作数,遇到操作数直接压入栈内,遇到操作符就把栈顶的两个操作数拿出来运算一下,然后把运算结果放入栈内。
【Jav...
分类:
其他好文 时间:
2014-08-28 21:13:36
阅读次数:
247
计算逆波兰式子:
有效的操作只有 +, -, *, /.
每一个输入不是一个整数就是一个操作符。
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
#include
#include
#i...
分类:
其他好文 时间:
2014-08-23 23:02:10
阅读次数:
465
表达式求值前缀式:就是将操作符放到数值的前面;如:a+b : +ab;中缀式:就是将操作符放在数值中间,其实就是我们平时生活中所写的正常的表达式。如:a+b;后缀式:就是将操作符放在数值的后面,比如:a+b:——ab+.对于表达式求值,最简单的当然是对后缀表达式(也称为逆波兰式)进行求值了。而我们生...
分类:
其他好文 时间:
2014-08-22 10:37:36
阅读次数:
180
复习下数据结构,用栈简单实现逆波兰表达式,参考文档:http://www.nowamagic.net/librarys/veda/detail/2307http://www.nowamagic.net/librarys/veda/detail/2306直接上代码:/***code by lichma...
分类:
其他好文 时间:
2014-08-05 00:07:48
阅读次数:
231
描述:逆波兰记法中,操作符置于操作数的后面。例如表达“三加四”时,写作“34+”,而不是“3+4”。如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3-4+5”在逆波兰记法中写作34-5+”:先3减去4,再加上5。使用逆波兰记法的一个好处是不需要使用括号。..
分类:
其他好文 时间:
2014-08-01 20:06:03
阅读次数:
213
一、 将中缀表达式转换成后缀表达式算法:1、从左至右扫描 中缀表达式。2、若读取的是操作数(数字),则判断该操作数的类型,并将该操作数存入操作数堆栈3、若读取的是运算符(1) 该运算符为左括号"(",则直接存入运算符堆栈。(2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇...
分类:
其他好文 时间:
2014-07-30 09:46:13
阅读次数:
220