zoukankan      html  css  js  c++  java
  • Dijkstra的双栈算术表达式求值算法

    public class Evaluate{
        public static void main(String[] args){
            Stack<String> ops = new Stack<String>();
            Stack<Double> vals = new Stack<Double>();
            Scanner in = new Scanner(System.in);
            while (in.hasnext()){
                String s = in.nextString();
                if    (s.equals("("))        ;
                else if    (s.equals("+"))    ops.push(s);
                else if (s.equals("-")) ops.push(s);
                else if (s.equals("*")) ops.push(s);
                else if (s.equals("/")) ops.push(s);
                else if (s.equals("sqart")) ops.push(s);
                else if (s.equals(")")){
                    String op = ops.pop();
                    double v = vals.pop();
                    if    (op.equals("+")) v = vals.pop()+v;
                    else if (op.equals("-")) v = vals.pop()-v;
                    else if (op.equals("*")) v = vals.pop()*v;
                    else if (op.equals("/")) v = vals.pop()/v;
                    else if (op.equals("sqrt")) v = Math.sqrt(v);
                    vals.push(v);
                }
                else vals.push(Double.parseDouble(s));
            }
            system.out.println(vals.pop());
        }
    }
  • 相关阅读:
    简单C#、asp.net mvc验证码的实现
    c# 局域网文件传输实例
    c# http get请求与post请求实例
    轻松3步实现c#windowsform窗体美化
    c#内部类的使用
    java
    java
    java
    java
    java
  • 原文地址:https://www.cnblogs.com/haoyangblog/p/7586506.html
Copyright © 2011-2022 走看看