在学习该内容时,建议先学会:
中缀表达式的计算:
“ A - B + C *( D / E - F )+ G ”
中缀表达式的计算 = 中缀表达式转化为后缀表达式的计算 + 后缀表达式的计算。
在运算过程中,首先创建一个 “操作数栈” 和一个 “运算符栈” 。
1、从左往右扫描,在扫描到操作数时,将此操作数压入操作数栈。
2、扫描到运算符时,将栈内的所有 优先级大于或等于该运算符的运算符 弹出,每弹出一个运算符,就将靠近操作数栈顶的两个元素弹出,第一个弹出在运算符右侧,第二个弹出在运算符左侧,最后结果压入操作数栈顶。扫描到的运算符压入运算符栈。
3、如果扫描到 “( ” ,将其压入运算符栈,并在运算时将其视为栈底(即运算 “( ” 之后的所有操作都在遇到 “( ” 时截止)。直到遇到 “ )” 时,将运算符栈内运算符依次弹出,直到弹出 “( ”为止。每弹出一个运算符,就将靠近操作数栈顶的两个元素弹出,第一个弹出在运算符右侧,第二个弹出在运算符左侧,最后结果压入操作数栈顶。
4、在处理完所有字符之后,将运算符栈内运算符依次弹出,每弹出一个运算符,就将靠近操作数栈顶的两个元素弹出,第一个弹出在运算符右侧,第二个弹出在运算符左侧,最后结果压入操作数栈顶。