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计算的结果:

  • 相关阅读:
    查詢一個表中的所有字段,一个表的结构
    二月份工作總結
    导出excel [原创]
    一个it老总对于新人的一点建议
    命名空间的别名
    mssql 格式化时间 [转]
    开发人员一定要加入收藏夹的网站
    sql 导出/入Excel
    hibernate中hbm文件中inverse功能
    详细展示Asp.net页面的生命周期[转]
  • 原文地址:https://www.cnblogs.com/songdechiu/p/6513868.html
Copyright © 2011-2022 走看看