一般来说,"双栈秒杀表达式"并非标准术语,通常指用"双栈法(操作数栈 + 运算符栈)高效求解中缀算术/布尔表达式"的算法,核心是利用运算符优先级实时计算,避免转换后缀。
生成方式
我们再来看看后缀表达式是如何从中缀一步一步解析出来的,基本流程如下:
顺序遍历中缀表达式。
遇到数值则直接输出。
遇到运算符分三类处理
- 计算运算符
- 若优先级 > 栈顶运算符 则压栈
- 若优先级 <= 栈顶运算符 则将栈顶弹出,并循环判断。直到回到情况 1。
- 左括号 直接入栈。
- 右括号 依次弹出栈顶符号,直到出现配对的左括号。
最后处理运算符栈中剩余的符号,依次出栈即可。
