c语言中的后缀表达式是什么意思?

如题所述

转化后的后缀表达式为: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、教育意义上,逆波兰计算器的使用者必须懂得要计算的表达式的含义。

参考资料来源:百度百科-后缀表达式

温馨提示:答案为网友推荐,仅供参考