算术表达式a+b*(c+d/e )转为后缀表达式是?具体分析下!谢谢!! 20
转化后的后缀表达式为:abcde/+*+
具体分析:
1、初始化一空栈,用来对符号进出栈使用。
2、第一个字符是a,输出,后面是符号“+”,进栈。输出的为a。
3、第三个字符是b,输出,后面是符号“*”,进栈。输出的为ab。
4、 第五个字符是“(”,依然是符号,因其只是左括号,还未配对,故进栈。输出的为ab。
5、第六个字符是c,输出,后面是符号“+”,进栈。输出的为abc。
6、第八个字符是d,输出,后面是符号“/”,进栈。输出的为abcd。
7、后面是字符e,输出,之后是“)”配对完成。进栈输出的为abcde。
8、栈顶元素“(”出栈,“/”出栈,“+”出栈,“(”出栈,括号配对完成。
9、之后也是依次出栈,最后结果为:abcde/+*+。
扩展资料:
后缀表达式进行计算的通用做法:
可以先建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。
后缀表达式:也叫逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。
实际意义:
1、当有操作符时就计算,因此,表达式并不是从右至左整体计算而是每次由中心向外计算一部分,这样在复杂运算中就很少导致操作符错误。
2、堆栈自动记录中间结果,这就是为什么逆波兰计算器能容易对任意复杂的表达式求值。与普通科学计算器不同,它对表达式的复杂性没有限制。
3、逆波兰表达式中不需要括号,用户只需按照表达式顺序求值,让堆栈自动记录中间结果;同样的,也不需要指定操作符的优先级。
4、逆波兰计算器中,没有“等号”键用于开始计算。
5、逆波兰计算器需要“确认”键用于区分两个相邻的操作数。
6、机器状态永远是一个堆栈状态,堆栈里是需要运算的操作数,栈内不会有操作符。
7、教育意义上,逆波兰计算器的使用者必须懂得要计算的表达式的含义。
参考资料来源:百度百科-后缀表达式
转为后缀表达式是abcde/+*+
a+b*(c+d/e) (a+(b*(c+(d/e))))
按照运算符的优先级对所有的运算单位加括号,式子变成了:(a+(b*(c+(d/e)))),然后转换后缀表达式。
后缀:把运算符号移动到对应的括号后面,则变成了:(a(b(c(de)/)+)*)+
把括号去掉后的式子则为后缀表达式: abcde/+*+
扩展资料:
将中缀表达式转换为后缀表达式的算法思想:
1、开始扫描;
2、数字时,加入后缀表达式;
3、运算符:
a、若为 '(',入栈;
b、 若为 ')',则依次把栈中的运算符加入后缀表达式中,直到出现'(',从栈中删除'(' ;
c.、若为 除括号外的其他运算符, 当其优先级高于除'('以外的栈顶运算符时,直接入栈。否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比它优先级低的或者遇到了一个左括号为止,然后将其自身压入栈中(先出后入)。
4、当扫描的中缀表达式结束时,栈中的的所有运算符出栈;
参考资料:百度百科-后缀表达式
转为后缀表达式是“abcde/+*+ ”。
a+b*(c+d/e) (a+(b*(c+(d/e))))
通过根据运算符的优先级将所有算术单元括起来,该表达式变为:(a+(b*(c+(d/e)))),然后转换后缀表达式。
后缀:将操作符号移到相应的括号之后,然后变为:(a(b(c(de)/)+)*)+
除去括号后的表达式是后缀表达式:abcde/+*+
扩展资料:
后缀表达式进行计算的通用做法:
可以先建立一个栈S 。从左到右读表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压入栈S中 。如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束。
后缀表达式:也叫逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数学表达式方式,在逆波兰记法中,所有操作符置于操作数的后面,因此也被称为后缀表示法。逆波兰记法不需要括号来标识操作符的优先级。
参考资料来源:
(a+(b*(c+(d/e)))) 按计算顺序加上括号
(a(b(c(de)/)+)*)+ 把运算符放到括号外面
abcde/+*+ 去掉括号
脑算,没用编程实现!
后缀表达式是从左到右算。
我给你说说我的技巧吧,也许你就学会了。
1。先写好顺序 abcde
2。然后按运算顺序符号 abcde/ abcde/+ abcde/+* abcde/+*+
OK解决。
心得技巧:这是按符号算,从第一个符号的左边俩个数开始算。每个符号都是算符号左边的两个数!
sorry.