前、中、后这三个方位名词是运算符相对于操作数的位置而言的:
如果是前缀运算符的话 那么就是运算符在操作数前面
如果是中缀运算符的话 那么就是运算符在操作数中间
如果是后缀运算符的话 那么就是运算符在操作数后面
前缀表达式(波兰式)
前缀表达式的计算方法:
1.遇到操作数 将其压入栈中
2.遇到运算符 从栈中弹出两个操作数
3.从右到左开始扫描 直到到达最左端为止
eg: - + 1 × + 2 3 4 5
首先将5 4 3 2 依次压入栈中
其次遇到了+ 将栈顶的3和2弹出 并且进行加法运算 然后将5压入栈中
接着遇到了x 将栈顶的4和5弹出 并且进行乘法运算 然后将20压入栈中
接着将1压入栈中
接着遇到+ 将栈顶的20和1弹出 并且进行加法运算 然后将21压入栈中
接着遇到- 将栈顶的5和21弹出 并且进行减法运算 然后将16压入栈中
最终的结果就是16
后缀表达式
后缀表达式的计算方法:
1.遇到操作数 将其压入栈中
2.遇到运算符 从栈中弹出两个操作数
3.和前缀表达式唯一不同的是 他是从左往右进行扫描的 直到到达最右端为止
案例和前缀表达式的案例如出一辙
中缀表达式
由于计算机只认识前缀和后缀表达式 所以必须先将中缀转换成前缀或者后缀在进行运算操作
转换方法:
就是根据运算符的优先级来适当进行括号的添加
eg:1+(2+3)×4-5
经过转换以后变成了((1+((2+3)x4))-5)
然后选择一种你想要的目标 比如前缀表达式
然后将运算符统统一道操作数前面
就变成了-(+(1x(+(23)4))5)
然后再将先前添加的括号统统去掉
-+1x+2345
然后就可以通过各自的计算方法进行计算了