• 算法Sedgewick第四版-第1章基础-013一用stack实现自动补全表达式括号


     1 package algorithms.exercise;
     2 
     3 import algorithms.ADT.Stack;
     4 import algorithms.util.StdIn;
     5 import algorithms.util.StdOut;
     6 
     7 
     8 /*************************************************************************
     9  *
    10  *  % java Ex_1_3_09
    11  *  1 + 2 ) * 3 - 4 ) * 5 - 6 ) ) )
    12  *  ( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 - 6 ) ) )
    13  *
    14  *  % java Ex_1_3_09
    15  *  sqrt 1 + 2 ) )
    16  *  ( sqrt ( 1 + 2 ) )
    17  *
    18  *************************************************************************/
    19 
    20 public class Ex_1_3_09
    21 {
    22     public static void main(String[] args)
    23     { 
    24         Stack<String> ops  = new Stack<String>();
    25         Stack<String> vals = new Stack<String>();
    26 
    27         while (!StdIn.isEmpty())
    28         {
    29             String s = StdIn.readString();
    30             
    31             if      (s.equals("("))               ;
    32             else if (s.equals("+") ||
    33                      s.equals("-") ||
    34                      s.equals("*") ||
    35                      s.equals("/") ||
    36                      s.equals("sqrt")) ops.push(s);
    37             else if (s.equals(")"))
    38             {
    39                 String op = ops.pop();
    40                 String v = vals.pop();
    41                 
    42                 if (op.equals("+") ||
    43                     op.equals("-") ||
    44                     op.equals("*") ||
    45                     op.equals("/"))
    46                     v = String.format("( %s %s %s )", vals.pop(), op, v);
    47                 else if (op.equals("sqrt"))
    48                     v = String.format("( %s %s )", op, v);
    49                 
    50                 vals.push(v);
    51             }
    52             else vals.push(s);
    53             //else vals.push(((Double)Double.parseDouble(s)).toString());
    54         }
    55         
    56         StdOut.println(vals.pop());
    57     }
    58 }
  • 相关阅读:
    linux给用户添加sudo权限
    VirtualBox下安装ubuntu图文教程以及软件安装
    线程池代码(通用版)
    linux下配置jdk+tomcat
    线程池代码(加强版)
    线程池的理解与简单实现(学习版)
    条件变量pthread_cond_wait()和pthread_cond_signal()详解
    五种编程模型
    Linux线程退出、资源回收、资源清理的方法
    数据结构
  • 原文地址:https://www.cnblogs.com/shamgod/p/5408979.html
Copyright © 2020-2023  润新知