为了账号安全,请及时绑定邮箱和手机立即绑定

哪种数据结构适合求解方程

哪种数据结构适合求解方程

牛魔王的故事 2021-10-28 09:57:38
我计划从基础开发一个方程求解器,并能够使用以下代码进行基本的数学运算。我使用了一个令牌堆栈结构,用于存储分隔符和数字令牌。虽然这个实现太基础了,但我想在以后的版本中改进它。我只需要一些帮助我使用数据结构将令牌存储为一组堆栈的方式。请提出任何错误?import java.util.ArrayList;import java.util.Stack;class TokenStack<N, D> {    private Stack<N> numberStack;    private Stack<D> delimStack;    public TokenStack() {        numberStack = new Stack<N>();        delimStack = new Stack<D>();    }    public void pushN(N num) {        numberStack.push(num);    }    public N popN() {        return numberStack.pop();    }    public void pushD(D delim) {        delimStack.push(delim);    }    public D popD() {        return delimStack.pop();    }    public boolean isEmptyN() {        return numberStack.isEmpty();    }    public boolean isEmptyD() {        return delimStack.isEmpty();    }}public class GeneralST {    private static final char SPACE_DELIM = ' ';    private static final char ADD_DELIM = '+';    private static final char SUB_DELIM = '-';    private static final char MUL_DELIM = '*';    private static final char DIV_DELIM = '/';    protected static final char EQU_DELIM = '=';    private TokenStack<String, Character> tokens = new TokenStack<String, Character>();    protected ArrayList<Character> acceptedDelims = new ArrayList<Character>();    protected ArrayList<Character> mathsDelims = new ArrayList<Character>();    protected double result;    public double getResult() {        return result;    }    protected void setupDelims() {        acceptedDelims.add(SPACE_DELIM);        mathsDelims.add(ADD_DELIM);        mathsDelims.add(SUB_DELIM);        mathsDelims.add(MUL_DELIM);        mathsDelims.add(DIV_DELIM);        acceptedDelims.addAll(mathsDelims);    }
查看完整描述

1 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

你的问题是“算术评估”。

许多书“算法”中都提到了它。

解决它的最佳和简单方法:使用堆栈和“后缀表示法”。

你可以找到很多你最喜欢的编程语言的文章。


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信