zoukankan      html  css  js  c++  java
  • 算法(Algorithms)第4版 练习 1.3.11

    主要思路:

    这个和Dijkstrad的双栈算法不太一样,后缀的计算只需要一个栈即可。

    用一个栈来存数字栈即可。

    遇到数字,压栈。

    遇到运算法,从栈中弹出相应的数字,用该运算法计算得到结果。

    再次压入栈中。

    最终从栈中弹出最终运算结果。

    方法实现:

    //1.3.11
    //only support +-*/ operator
    package com.qiusongde;
    
    import edu.princeton.cs.algs4.StdIn;
    import edu.princeton.cs.algs4.StdOut;
    
    public class EvaluatePostfix {
    
        public static void main(String[] args) {
            Stack<Double> vals = new Stack<Double>();
            
            while(!StdIn.isEmpty()) {
                
                String s = StdIn.readString();
                
                if(s.equals("+")) {
                    double v = vals.pop();//second operand
                    v = vals.pop() + v;
                    vals.push(v);
                }
                else if(s.equals("-")) {
                    double v = vals.pop();//second operand
                    v = vals.pop() - v;
                    vals.push(v);
                }
                else if(s.equals("*")) {
                    double v = vals.pop();//second operand
                    v = vals.pop() * v;
                    vals.push(v);
                }
                else if(s.equals("/")) {
                    double v = vals.pop();//second operand
                    v = vals.pop() / v;
                    vals.push(v);
                }
                else {
                    vals.push(Double.parseDouble(s));
                }
                
            }
            
            StdOut.println(vals.pop());
            
        }
    
    }

    测试1:( 2 + ( ( 3 + 4 ) * ( 5 * 6 ) ) )

    用Evaluate计算的结果:

    用InfixToPostfix转换结果:

     

    用EvaluatePostfix计算的结果:

    测试2:( ( ( 6 + 2 ) * 5 ) - ( 8 / 4 ) )

     用Evaluate计算的结果:

     

    用InfixToPostfix转换结果:

    用EvaluatePostfix计算的结果:

  • 相关阅读:
    使用C#开发ActiveX控件 并制作Cab包
    asp.net后台创建table设置宽度百分比
    Sql按姓名查出某个人的成绩排名
    获得DataGridView多选框值
    解决iframe窗体丢失Session时登录窗口显示在子页面的问题
    xml返回数组数据
    安卓界面组件文本框
    安卓的UI界面开发(初学者推荐)
    安卓布局
    安卓界面组件按钮
  • 原文地址:https://www.cnblogs.com/songdechiu/p/6513868.html
Copyright © 2011-2022 走看看