表达式求值是程序设计语言编译中一个最基本的问题,它的实现是栈应用的一个典型范例。中缀表达式不仅依赖运算符的优先级,而且还要处理括号。后缀表达式的运算符在操作数后面,在后缀表达式中已考虑了运算符的优先级,没有括号,只有操作数和运算符。
例如:前文中缀表达式a + b − a ∗ ( ( c + d ) / e − f ) + g 所对应的后缀表达式为ab+acd+e/f-*-g+。(这一点还不清楚的可以参考上一篇文章)
后缀表达式计算规则:从左到右遍历表达式的每个数字和符号,遇到是数字就进栈;遇到是运算符,就进行两次取栈顶元素并出栈,并取出的两个栈顶元素执行该运算符的运算,运算结果再进栈,一直到表达式最终获得结果。
每个过程的图画出来太多了;就只列个步骤表吧。
水平有限,难免有纰漏,欢迎大家斧正~
喜欢本文的朋友请三连哦!!!
另外本文也参考了网络上其他优秀博主的观点和实例,这里虽不能一一列举但内心属实感谢无私分享知识的每一位你们。