threejs交流群511163089

这两天做计算数学表达式,这个就要用到后缀表达式来做,这是数据结构课会教的东西,发现规律的大神真牛批

咱们就看看js怎么做这种东西,普通算式就是中缀表达式。

规则

如果遇到左括号则直接入栈

如果遇到右括号,则弹出站内只到出现左括号为止

如果站外操作符的优先级高于站内的优先级则入栈

如果栈外的操作符优先级低于或等于栈内的优先级,输出栈内的符号,并入栈栈外的符号

中缀表达式遍历完成,但是栈中还有符号存在,一一出栈输出

输出就是装进后缀表达式栈

这样出来的就是处理好的后缀表达式了

然后依次从栈底开始,遇见符号就对符号下面两个数进行运算,运算栗子,符号此时是减号,栈顶是2,上一个元素是1 此时就是1-2得到-1,加减乘除都是这样

最后只剩下栈里最后一元素,就是答案

2-(2+2*3)//原始模样
处理成
-
+
*
3
2
2
2
这个样子

 

过程从左往右扫描式子  左边是后缀表达式结果 右边是暂存栈
2

2 -

(
2 -


2 (
2 -

+
2 (
2 -

2 +
2 (
2 -

*
2 +
2 (
2 -

2 *
2 +
2 (
2 -这里遇见右括号

-
*
+
2
2
2
2