堆栈进行简单表达式计算

易语言 2020-07-10 09:23:04

堆栈进行简单表达式计算

表达式支持符号: +-*/() 同优先级从左往右运算,不支持负数
另外对于错误的表达式检测并不完整...错误的表达式将会得到错误的答案
有需要请自行修改,本源码只是提供思路

思路什么的在源码里已经说明了...需要了解下 堆栈 和 后缀表达式 两个概念就可以看了。

只支持 加减乘除和括号,不支持负数(懒得写了...实际上可以考虑在两个运算符中间做判断,如果没有操作数的话通过增加0来计算负数,比如1+-3视为1+0-3处理)

' 调试输出 (计算数组) '去掉注释可查看转换后的后缀表达式
' 接下来利用堆栈来计算后缀表达式
清空堆栈 ()
' 思路如下:
' 从左向右遍历后缀表达式,如果遇到数字则加入堆栈,遇到符号则从堆栈取出两个操作数操作,将操作结果重新放入堆栈
' 当循环结束时堆栈内的数据就是计算结果
' 操作顺序应当是第二个操作数+符号+第一个操作数(如堆栈内容为 1,2 (2是栈顶),则为1+2)