上回讲了如何计算后缀表达式,其实真正的难点在于如何将一个正常的字符串表达式(中缀表达式)变成一个后缀表达式。如将6 * ( 5 + ( 2 + 3) * 8 + 3)变为6 5 2 3 + 8 * + 3 + * 逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。逆波兰表达式又叫做后缀表达式。这个知识点在数据结构和编译原理这两门课程中都有介绍,下面是一些例子:...
分类:
编程语言 时间:
2014-09-11 15:26:03
阅读次数:
229
题意:题目意思是给出后缀表达式,可以通过栈来计算表达式的值,即转化为中缀表达式。然后如果现在不用栈,而是用队列来操作,即每遇到一操作符时,进行两次pop和一次push。(这里注意,先pop出来的作为第二操作数,操作符假设是不满足交换律和结合律的)因为队列的pop和push,与栈的不同么,所以,问队列的输入应该是怎样的,才能和给定的输入用栈来计算,所得值相同。(即转化为相同的中缀表达式)
思路:先...
分类:
其他好文 时间:
2014-08-24 01:52:21
阅读次数:
230
Java实现四则运算,四则运算的基础原理是将中缀表达式转换成为后缀表达式。然后进行计算。...
分类:
编程语言 时间:
2014-08-22 10:53:56
阅读次数:
195
中缀表达式“9+(3-1)*3+10/2”转化为后缀表达式“9 3 1-3*+ 10 2/+”中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,...
分类:
其他好文 时间:
2014-08-10 12:57:10
阅读次数:
226
/* solution of convertion of infix to postfix */#include #include #include struct StackRecord{ char Operator[32]; int TopIndex; int Capacity;...
分类:
其他好文 时间:
2014-07-31 19:44:42
阅读次数:
200
一、 将中缀表达式转换成后缀表达式算法:1、从左至右扫描 中缀表达式。2、若读取的是操作数(数字),则判断该操作数的类型,并将该操作数存入操作数堆栈3、若读取的是运算符(1) 该运算符为左括号"(",则直接存入运算符堆栈。(2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇...
分类:
其他好文 时间:
2014-07-30 09:46:13
阅读次数:
220
一、 将中缀表达式转换成后缀表达式算法:1、从左至右扫描 中缀表达式。2、若读取的是操作数(数字),则判断该操作数的类型,并将该操作数存入操作数堆栈3、若读取的是运算符(1) 该运算符为左括号"(",则直接存入运算符堆栈。(2) 该运算符为右括号")",则输出运算符堆栈中的运算符到操作数堆栈,直到遇...
分类:
其他好文 时间:
2014-07-29 17:31:22
阅读次数:
250
后缀表达式就是把一个式子进行树的后序遍历。然后根据这个顺序来求值。
栈来实现的时候很简单。
例如中缀表达式:6 * [ 5 + ( 2 + 3 ) * 8 + 3 ]
则 后缀表达式为:6 5 2 3 + 8 * + 3 + *...
分类:
编程语言 时间:
2014-07-29 14:31:48
阅读次数:
234