中缀表达式转后缀表达式
所谓中缀,即常见的那种表达式,如 8+(3−1)×5 8 + ( 3 − 1 ) × 5
后缀表达式则是计算机内部实际的计算方式,如 831−5×+ 831 − 5 × +
转换方法
对于”8+(3-1)*5”
先创建一个用来保存符号的栈stack
从左开始遍历每个字符:
对于数字:
直接输出
对于符号:
遇到左括号,进栈
遇到运算符号(+-*/),与栈顶的符号进行优先级比较,如果栈顶的优先级低,符号进栈(默认栈顶若是左括号,左括号优先级最低)。若栈顶符号优先级不低,先将栈顶符号弹出并输出,之后再让当前进栈。
遇到右括号,将栈顶符号弹出并输出,直到匹配左括号。(之后也把左括号弹掉,但不输出到屏幕)
当字符串遍历完毕,把栈中所有符号弹出就结束。
计算后缀表达式
表达式:831-5* +
从左开始遍历每个字符:
对于数字:
直接入栈
对于符号:
从栈中弹出一个右操作数
再从栈中弹出一个左操作数
根据符号进行运算(左 符号 右 = 结果)
将结果</