猿问

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

我计划从基础开发一个方程求解器,并能够使用以下代码进行基本的数学运算。我使用了一个令牌堆栈结构,用于存储分隔符和数字令牌。虽然这个实现太基础了,但我想在以后的版本中改进它。我只需要一些帮助我使用数据结构将令牌存储为一组堆栈的方式。请提出任何错误?


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);

    }


牛魔王的故事
浏览 113回答 1
1回答

慕的地8271018

你的问题是“算术评估”。许多书“算法”中都提到了它。解决它的最佳和简单方法:使用堆栈和“后缀表示法”。你可以找到很多你最喜欢的编程语言的文章。
随时随地看视频慕课网APP

相关分类

Java
我要回答