中缀表达式:就是运算符号在数字中间的表达方式。
后缀表达式:运算符号在数字的后面出现。
1、中缀表达式向后缀表达式的转换方法:
规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,就判断当前符号与栈顶符号的优先级,如果是右括号或者是优先级低于栈顶符号(乘除优先加减),则栈顶元素依次出栈并输出(全部输出,如果是右括号,则到左括号输出为止),当前符号进栈,如此进行直到最终输出后缀表达式。
例子:将中缀表达式9+(3-1)*3+10/2 转换为后缀表达式
(1)输出9 栈为空
(2)“+” , “(”依次入栈 输出:9 3 ,紧接着“-”入栈 输出:9 3 1
(3)下一个符号是“)” , 要与“(”匹配。因此栈顶符号依次出栈,直到“(”
输出结果为:9 3 1 - , 栈内元素只剩下“+”
(4)紧接着是“*” , 优先级高于+ , 入栈
(5)输出: 9 3 1 - 3
(6)“+”号优先级低于“*” , 因此站内元素依次出栈, 输出: 9 3 1 - 3 * + , 再将此时的“+”入栈
(7)输出: 9 3 1 - 3 * + 10
(8)“/”入栈
(9)输出: 9 3 1 - 3 * + 10 2
(10)栈内所有符号出栈: 9 3 1 - 3 * + 10 2 / +
最后得到后缀表达式为:9 3 1 - 3 * + 10 2 / +
2、计算后缀表达式:
规则:从左到右依次遍历后缀表达式,遇到数字就进栈,遇到符号就将栈顶的两个元素进行该符号的操作。注意:栈顶的元素是符号后的数字,栈顶元素的前一个元素是运算符的前面的数字。
例子:计算后缀表达式“9 3 1 - 3 * + 10 2 / + ”的值
(1)9 , 3 , 1 入栈 , 栈内元素: 9 3 1
(2)遇到符号“-” , 将栈顶元素出栈,按照顺序应该是: 3 - 1,得到结果2, 入栈,栈内元素为 : 9 2
(3)3 入栈, 栈内元素: 9 2 3
(4)“*” , 2,3 出栈, 2*3 = 6 , 6 进栈,栈内元素: 9 6
(5)“+” , 9,6出栈,9+6 = 15, 15入栈,栈内元素:15
(6)10, 2 依次入栈,栈内元素:15, 10 , 2
(7)“/” , 10 , 2 依次出栈, 10/2 = 5 , 5 入栈 , 栈内元素: 15 5
(8)“+” , 15 5 依次出栈 , 15 + 5 = 20 , 20 入栈 , 栈内元素: 20
(9)得到结果 20
以上就是关于中缀表达式与后缀表达式的一些内容。