计算器算法

计算器算法是一个相对有趣的算法,这篇文章会教会大家带括号优先级的计算器算法

生活中算术表达式是指中缀表达式例如:5 + 4 ÷ 2,计算机使用中缀表达式计算相对不方便,我们需要将中缀表达式转换成前缀或者后缀表达式,这里使用后缀表达式(逆波兰表达式)为例

逆波兰表达式

例如:3 4 + 5 × 6 -

计算方法:

从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 op 栈顶元素),并将结果入栈;重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果

举个栗子:从左至右扫描,将3和4压入堆栈

遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素,注意与前缀表达式做比较),计算出3+4的值,得7,再将7入栈

将5入栈

接下来是×运算符,因此弹出5和7,计算出7×5=35,将35入栈

将6入栈

最后是-运算符,计算出35-6的值,即29,由此得出最终结果

将中缀表达式转换为后缀表达式初始化两个栈:运算符栈s1和储存中间结果的栈s2;

从左至右扫描中缀表达式;

遇到操作数时,将其压s2;

遇到运算符时,比较其与s1栈顶运算符的优先级:如果s1为空,或栈顶运算符为左括号“(”,

java 计算器算法_计算器算法相关推荐

  1. 常用十大算法_回溯算法

    回溯算法 回溯算法已经在前面详细的分析过了,详见猛击此处. 简单的讲: 回溯算法是一种局部暴力的枚举算法 循环中,若条件满足,进入递归,开启下一次流程,若条件不满足,就不进行递归,转而进行上一次流程. ...

  2. cb32a_c++_STL_算法_查找算法_(5)adjacent_find

    cb32a_c++_STL_算法_查找算法_(5)adjacent_find adjacent_find(b,e),b,begin(),e,end() adjacent_find(b,e,p),p-p ...

  3. 计算器加减乘除优先级算法_计算器也算错数学?华为、苹果、小米内置计算器都算错了...

    现在科技越来越发达,很多加减乘除都是用计算器,帮助我们得出结果. 近日,一则"手机计算器全线阵亡"的消息登上各大热搜榜.不少网友发现自己手机的计算器出现了一个错误:在手机计算器中输 ...

  4. java寻优算法_模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径...

    模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...

  5. java调度问题的贪心算法_贪心算法——换酒问题

    知识回顾 贪心算法 (greedy algorithm),又称贪婪算法. 是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法. 贪心算法在 有最优子 ...

  6. python序列模式的关联算法_关联算法

    以下内容来自刘建平Pinard-博客园的学习笔记,总结如下: 1 Apriori算法原理总结 Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合 ...

  7. 接受拒绝算法_通过算法拒绝大学学位

    接受拒绝算法 数据科学 (Data Science) Nina was close to tears when she accused Nick Gibb of ruining her life. N ...

  8. 编程神奇算法_分类算法的神奇介绍

    编程神奇算法 由Bryan Berend | 2017年3月23日 (by Bryan Berend | March 23, 2017) About Bryan: Bryan is the Lead ...

  9. 数据挖掘算法_数据挖掘算法入门

    有南方的朋友讲过北方人喜欢打比方,尤其是甲方的,其实也没什么不好了.如果是做菜的话,那么这些算法就相当于烹饪的工具了.对原始的食材进行预处理.加工整合,选择合适烹饪工具,以及对应的方法步骤,最后收获舌 ...

  10. prim算法_贪心算法详解(附例题)

    贪心算法的特征规律 贪心算法,"贪心"二字顾名思义,因此其规律特征就是更加注重当前的状态,贪心法做出的选择是对于当前所处状态的最优选择,它的解决问题的视角是微观的"局部& ...

最新文章

  1. todomvp 谷歌的MVP实例
  2. cesium 3dtiles 加载本地数据_Meteva笔记:加载本地观测数据
  3. 可侦测多种眼疾的AI 系统 对不熟悉眼科的医疗照护人员极有帮助
  4. QT的QHashIterator类的使用
  5. React + TypeScript 默认 Props 的处理
  6. 前端学习(500):水平居中布局得第二种方式
  7. rhel5.4下编译安装python2..6.6 + mod_python
  8. 【Python学习笔记之一】Python关键字及其总结
  9. Linux文件系统的创建与管理(上)
  10. ghost系统卡正在启动服务器,安装win7系统卡在正在启动windows界面的解决方法
  11. # 华为数通IE学习 第一节
  12. 图纸怎么折?(A0,A1,A2,A3の图纸如何折成A4大小)
  13. win7/win10 密码忘了?没关系,利用5次shift,9步轻松破解密码
  14. 供应链三道防线(读书笔记)4(共4)
  15. Python11 镜像
  16. PhotonServer中日志的配置
  17. VS 2019 点击页面自动定位到解决方案资源管理器目录位置
  18. 强力推荐mac快速查看应用快捷键工具:键指如飞FlyKey
  19. 公众号滑动图代码_微信公众号图文排版之图片滑动的新玩法
  20. 一个Qt调用百度翻译API进行文本翻译的程序记录,辅助ts文件进行翻译。

热门文章

  1. 大型锅炉烟气SCR脱硝改造
  2. 肝完了,一天掌握数据结构和算法面试题,吊打面试官,一起学习吧
  3. linux多网卡网络编程,Linux网络编程之Socket初探
  4. windows audio错误0x80070005怎么解决
  5. JavaScript-关系运算符详解
  6. js脚本控制优酷播放器
  7. Android 64位系统和32位的兼容性分析
  8. java学习总结(面试题持续更新)
  9. android 9 隐藏上下导航栏
  10. 计算机老年学校讲义,海淀区中关村街道:文明市民学校开学 老年人走进校园学电脑(图)...