在看K&R的时候,里面提到了逆波兰表示法,老实说看得我迷迷糊糊的,主要是这种反人类的后缀表示法做出的计算器,一般人根本就不知道怎么输入好吧。今天看书的时候,看到了将中缀表达式转为后缀表达式的方法才恍然大悟,原来是少了这一步。这下我就知道该如何做一个可用的逆波兰计算器了。 先简单介绍一下如何完成这步转 ...
分类:
其他好文 时间:
2016-08-13 01:04:07
阅读次数:
271
本篇概述下运用栈(stack),将中缀表达式(postfix expression)转换成后缀表达式(infix expression),并运算结果。 ...
分类:
其他好文 时间:
2016-08-06 01:49:29
阅读次数:
276
我们平常书写的四则运算表达式属于中缀表达式,形式为"9+(3-1)*3+10/2",因为所有的运算符号都在两操作数之间,所以称为中缀表达式。我们使用中缀表达式来计算表达式的值,不过这种形式并不适合计算机求解。接下来,我们将中缀表达式转化为后缀表达式,所谓的后缀表达式就是操作符位于操作数后面的不包含括 ...
分类:
其他好文 时间:
2016-08-01 20:52:42
阅读次数:
218
看这样段代码,Scala会把它当作两个语句,x 和 +y,如果想把它作为一个语句,可以把它们放在括号里(x+y) x +y 或者也可以把 + 放在行末,也正因为此,串接类似于 + 这样的中缀操作符的时候,Scala通常的风格是吧操作符 放在行尾而不是行头。 x + y 分号推断的规则简单扼要,那就是 ...
分类:
其他好文 时间:
2016-07-31 15:50:37
阅读次数:
234
对于最终加入了括号的序列,对其求中缀表达式,建树。 可以发现$n-1$个运算符DFS序递增,且若一个-上方往左走了奇数次,则它就是+,否则就是-。 所以考虑DP,设$f[i][j]$表示考虑了前$i$个运算符,且最右边那条链长度为$j$的方案数。 时间复杂度$O(n^2)$。 ...
分类:
其他好文 时间:
2016-07-12 23:12:39
阅读次数:
242
在接下来的几篇博文中,将介绍表、栈、队列在编程实践中的应用。 (1)表达式求值: 输入一个中缀表达式,操作符包括(+ - * / ^)。转化为后缀表达式之后并计算表达式的值: 要求: 1.输入的中缀表达式必须是一个完整的字符串; 2.不限制数字的位数和正负,负数用()括起来; 代码如下: 与之前写的 ...
分类:
编程语言 时间:
2016-07-09 23:38:56
阅读次数:
231
我们在一般的四则运算都是中缀表达式。 别问我什么是中缀表达式。 我就知道符号两边是数字。也就是符号在中间。 1+3 什么是后缀表达式呢? 13+ 符号在后面。 那么就有人奇怪了,为什么我要使用后缀表达式呢? 问题就是运算的时候,在编程实现的时候,后缀表达式比中缀表达式好用呗。 没事,不理解那里好用没 ...
分类:
其他好文 时间:
2016-07-09 23:33:33
阅读次数:
155
中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后 ...
分类:
其他好文 时间:
2016-07-09 12:01:07
阅读次数:
169
个人项目是做一个带有计算功能的程序,在操作过程中,主要是以下几个步骤: 1.中缀表达式转后缀 1.遇到操作数时,直接输出到后缀表达式中 2.当栈为空时,遇到运算符,则将运算符压入栈中 3.当遇到左括号,将左括号压入栈 4.当遇到右括号,将右括号抛弃,燃火执行出栈操作,并将出栈的元素输出到后缀表达式, ...
分类:
其他好文 时间:
2016-06-20 18:49:21
阅读次数:
136