应知道,计算机不好处理中缀表达式,最好转化为后缀表达式计算
代码附在文末
代码思想:(皆按代码编写顺序解释)
First,
若中缀表达式用string表示,需先将其拆分为运算符( +,-,*,/,(,) )和运算数,存在列表list中以便处理
Second,
我们需要一个栈Stack_op,来暂存运算符(现在还轮不到它来算的)
我们需要一个队列(列表也行)Que_final,来按顺序依次存放后缀表达式的元素
Third,
我们遍历中缀list,获得当前位置元素elem
(1)如果当前元素elem是左括号“(” ,直接压入Stack_op栈中
(2)如果当前元素elem是“+","-","*","/",我们比较它与Stack_op的栈顶元素:
a. 如果Stack_op栈为空,则直接压入Stack_op中
b. 如果栈顶元素是"(",则直接将当前元素压入Stack_op栈中
c. 如果栈顶元素是+-*/, 且栈顶元素优先级 >= 当前元素优先级 (乘=除>加=减),则将栈顶元素弹出,并加入结果