zoukankan      html  css  js  c++  java
  • 算法-第四版-练习1.3.10解答

    问题

    编写一个过滤器InfixToPostfix,将算术表达式由中序表达式转为后序表达式。

    解决思路

    简化问题,不考虑运算的优先级,或者说优先级全部由括号确定。如指处理以下输入:

    ( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 - 6 ) ) )

    代码

    /**
     * Description : 
     * Author      : mn@furzoom.com
     * Date        : Oct 20, 2016 10:41:49 AM
     * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved.
     */
    package com.furzoom.lab.algs.ch103;
    
    import java.util.Scanner;
    
    import edu.princeton.cs.algs4.StdIn;
    
    /**
     * ClassName    : E10310 <br>
     * Function     : InfixToPostfix <br>
     * date         : Oct 20, 2016 10:41:49 AM <br>
     * 
     * @version 
     */
    
    public class E10310
    {
        private static void infixToPostfix(String exp)
        {
            String[] params = exp.split(" ");
            Stack<String> stack = new Stack<String>();
            for (int i = 0; i < params.length; i++) {
                if (isOperator(params[i])) {
                    stack.push(params[i]);
                } else if (params[i].equals("(")) {
                    continue;
                } else if (params[i].equals(")")) {
                    System.out.print(stack.pop() + " ");
                } else {
                    System.out.print(params[i] + " ");
                }
            }
            System.out.println();
        }
        
        public static void main(String[] args)
        {
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()) {
                infixToPostfix(scanner.nextLine());
            }
            scanner.close();
        }
        
        private static boolean isOperator(String s)
        {
            return (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/"));
        }
    }
    

    结果

    ( ( 1 + 2 ) * ( ( 3 - 4 ) * ( 5 - 6 ) ) )
    1 2 + 3 4 - 5 6 - * *

    算法-第四版-1.3 背包、队列和栈-习题索引汇总

    算法-第四版习题索引汇总


  • 相关阅读:
    Assimp对FBX文件中geometric transformations的处理
    VSM
    WSL安装
    [p1880][NOI1995]石子合并
    【日常】集训总结
    【模板】背包
    【济南集训】20191006解题报告
    [P1516]青蛙的约会
    【模板】ST表
    【济南集训】20191001解题报告
  • 原文地址:https://www.cnblogs.com/furzoom/p/7710193.html
Copyright © 2011-2022 走看看