什么是中缀表达式
中缀表达式就是 a+b 这样的,运算符在两个数的中间
什么事后缀表达式
后缀表达式就是 a b + 这样的,运算符在两个数后面
再细分一下
中缀表达式 | 后缀表达式 |
---|---|
a+b-c | a b + c - |
a+b*c | a b c * + |
(a+b)*c | a b + c * |
((a+b)*c | a b + c * |
a / b ^ c + d * e - a * c | a b c ^ / d e * + a c * - |
emmmmm,虽然没感觉这样能带来什么便利,但书上说处理复杂表达式的时候可以避免计算机崩溃,但我不可能啥时候都写个这玩意吧,动不动就是百行代码,而且用c语言的话要区分很多细节啊,什么小数点,字符转数字,加减乘除乘方的优先级啊…
规律
就是用栈嘛,感觉用栈还是尽量操作数组吧,链表真的太繁琐了。。。
a+b 为例子 :
压入a
弹出a
压入+
压入b
弹出b
尾部
弹出+
得到 a b +
a+b*c 为例子 :
压入a
弹出a
压入+
压入b
弹出b
压入 * ( * 优先级大于 +)
压入c
弹出c
末尾
弹出 *
弹出+
(a+b)*c 为例子 :
压入(
压入a
弹出a
压入+
压入b
弹出b
检测到)
弹出+
压入 *
压入c
弹出c
尾部
弹出 *