发布网友 发布时间:2023-11-08 07:52
共1个回答
热心网友 时间:2024-12-04 06:49
转化后的后缀表达式为: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、教育意义上,逆波兰计算器的使用者必须懂得要计算的表达式的含义。
参考资料来源:百度百科-后缀表达式