栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA数据结构与算法-使用栈实现四则运算计算器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA数据结构与算法-使用栈实现四则运算计算器

一.需求:使用栈完成计算表达式的结果,输入为String类型,计算包括加减乘除,如“7*2*2-5+1-5+3-4”,输出为结果。

二.实现方法:

  1. 创建两个栈,一个为数栈(numStack),一个为符号栈(operStack),分别保存数字和运算符。
  2. 使用index作为索引遍历表达式。
  3. 数字直接入数栈。
  4. 符号分情况讨论:
  5. 若符号栈为空,则直接入栈。
  6. 若符号栈有操作符,则进行比较。若当前操作符优先级小于等于栈中操作符,则从数栈中pop出两个数字,从符号栈中pop出一个符号,进行运算,结果存入数栈,然后将当前操作符入符号栈。若当前操作符优先级大于栈中操作符,则直接入符号栈。
  7. 整个表达式扫描完毕后,顺序从数栈和符号栈中pop数和符号,并进行运算,最后在数栈中的数字就是表达式的结果。

三.图像表示

数字直接入栈

 

符号在栈为空时直接入栈

栈不为空时判断优先级

               

             优先级高于栈中操作符                            优先级低于栈中操作符

扫描完成后,顺序执行12-2,3+10

    

四.细节:

  1. 符号入栈的过程相当于对操作符进行排序,将优先级较高的操作符先进行计算,扫描完之后栈中越接近栈顶,优先级越高。
  2. 扫描完成后从栈顶开始进行二元运算,符合运算优先级规则。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035664.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号