首页 / JAVA / Java – 中缀计算器的数据结构
Java – 中缀计算器的数据结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java – 中缀计算器的数据结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1265字,纯文字阅读大概需要2分钟。
内容图文
![Java – 中缀计算器的数据结构](/upload/InfoBanner/zyjiaocheng/809/1dfb8ede3a244ec09f6e56b4e408dc08.jpg)
我想建立中缀计算器.我选择的方法是使用节点中的运算符和叶子中的操作数解析树中的输入,然后从下到上遍历树(从高优先级运算符到下层).
树的例子:
(12 + 8) / 2 - 5
–
/ '/' 5
/ + 2
/ \
12 8
第一:我是Java的新手,我应该选择哪种数据结构,或者我需要用自己的树实现创建新类?
第二:处理括号优先级的最佳方法是什么?
解决方法:
您应该使用一个小类层次结构,其中操作数被子类化为Operation和Literal. Operation有一个字段供运算符使用(最好:枚举)和两个操作数字段.
解析器可以创建Operation和Literal对象,并将它们的引用存储到包含的Operation中.
括号消失,因为结果树(如Q中所示)将根据优先级进行组织:按括号分组,然后按运算符优先级,最后从左到右.
你可以编写一个简单的递归下降解析器,不需要为这个小小的学术练习设置antlr.
稍后这是算术表达式的简单语法的BNF:
<expression> ::= <term> | <term> <addop> <expression>
<term> ::= <factor> | <term> <mulop> <factor>
<factor> ::= <constant> | (" <expression> ")"
<constant> ::= <digit> | <digit> <constant>
<addop> ::= "+" | "-"
<mulop> ::= "*" | "/"
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
递归下降解析器包括通过查找终端(括号,运算符,数字)并根据备选方案之一组成非终端来解析非终端的方法.成功时,返回Literal或Operation对象,并将其合并到调用者组成的对象中.
内容总结
以上是互联网集市为您收集整理的Java – 中缀计算器的数据结构全部内容,希望文章能够帮你解决Java – 中缀计算器的数据结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。