后缀表达式:后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。(抄自百度百科)
说到后缀表达式就不得不说中缀表达式了,中缀表达式就是我们最常见的表达式即运算符在两个操作数中间,运算优先级由运算符(包括括号)来决定,例如7+3*(8+1)-4/2.
在来讲一下中缀表达式转后缀表达式的方法:
首先我们需要有一个放符号的地方,一下
从左往右开始扫描
1.如果遇到数字:
就加入到后缀表达式中
2.如果遇到符号:
若为非括号(‘(’或‘)’)判断该符号与栈顶符号的优先级,若该符号高于栈顶符号,则入栈,否则栈顶元素依此出栈;并加入到后缀表达式中。
若为‘(’则直接入栈。
若为‘)’则栈顶元素出栈,并加入到后缀表达式中,直到遇到‘)’为止。
根据上边写的“7+3*(8+1)-4/2”转换后缀表达式的操作步骤
后缀表达式 | 栈 |
---|---|
7 | |
7 | + |
7 3 | + |
7 3 | + * |
7 3 8 | + * ( |
7 3 8 | + * ( + |
7 3 8 1 | + * ( |