str
在读取中序的过程中拼接成后序表达式str
之后str
之后public static String infixToPostfix() { Stack<String> stack = new Stack<>(); String tmp = ""; Scanner s = new Scanner(System.in); while(s.hasNext()) { String str = s.next(); if(str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/")) { stack.push(str); }else if(str.equals("(")) { }else if(str.equals(")")) { if(stack.isEmpty()) throw new NoSuchElementException("Stack underflow"); tmp += stack.pop() + " "; }else { tmp += str + " "; } } return tmp; }
中序表达式中一对括号构成的内容和后序表达式中两个操作数加上紧随其后的一个操作符都可以看成是整个表达式中的一个操作数
[1] Robert Sedgewick and Kevin Wayne -> https://algs4.cs.princeton.edu/13stacks/InfixToPostfix.java.html