用后缀表达式计算四则运算算法
来源:互联网 发布:java jdk官网下载 编辑:程序博客网 时间:2024/06/03 09:34
1*2+3*4, 这个对应的中缀表达式就是[1,*,2,+,3,*,4], 需要转换成后缀表达式[1,2,*,3,4,*,+], 才能进一步计算得到结果.
1.得到后缀表达式
需要准备两个容器, 符号栈 operatorStack 与 盛放后缀表达式的队列 expQueue.
按照下列规则从前到后遍历中缀表达式.
- 遇到数字num, 就expQueue.push(num);
- 若遇到操作符, 分两步处理
2.1 在符号栈operatorStack 中弹出若干个操作符op, 直至遇到优先级更低的操作符, 做expQueue.push(op)操作.
2.2 将当前运算符op放入栈中, operatorStack.push(op)
2.计算后缀表达式
需要用到上面得到的后缀表达式expQueue, 还需要一个保存计算结果的数字栈 numStack.
按照下列规则从前到后遍历后缀表达式.
- 遇到数字num, numStack.push(num);
- 若遇到操作符op, 从numStack取出栈尾两个数字,
b=numStack.pop(),a=numStack.pop()
得到c=a op b , numStack.push(c).
不断进行上述操作, 最后只剩一个数字, 就是答案.
3. 例题
见: 四则运算-jobdu-1101 .
0 0
- 用后缀表达式计算四则运算算法
- 后缀表达式计算四则运算
- 用java实现计算String类型的四则运算——用栈和后缀表达式实现
- 表达式(四则运算)计算的算法
- 表达式(四则运算)计算的算法
- 计算后缀表达式的算法
- 用二叉树存储计算四则运算表达式
- 计算四则运算表达式
- 中缀计算四则运算表达式
- 算式类型字符串表达式读取并计算出结果(简单四则运算)--后缀表达式计算
- 算法训练 表达式计算 中后缀表达
- 数据结构与算法分析计算后缀表达式
- 蓝桥杯 算法训练:表达式计算 中缀表达式变后缀表达式
- 四则运算的中缀表达式和后缀表达式
- 四则运算的中缀表达式和后缀表达式
- PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)
- 二叉树计算四则运算表达式
- Java实现四则运算表达式计算
- I帧 P帧 B帧 解惑
- OOP思想之虚函数表分析.
- java的正则表达式
- EM算法(期望最大化)——应用:GMM
- git 版本回退
- 用后缀表达式计算四则运算算法
- java一对一生产者消费者多线程练习
- N-Queens II
- Java ThreadLocal使用浅析
- post提交中神秘消失的post数据
- [运维]-Can't init tc log
- GitHub Permission denied(publickey)
- 深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)
- Zabbix3.2 Discovery 自动化监控磁盘IO(iostat)