后缀表达式转中缀表达式

来源:互联网 发布:php支付宝接口开发文档 编辑:程序博客网 时间:2024/05/29 11:37
package com.daelly.algorithm.stack.express;import java.util.Stack;/** * 后缀表达式转中缀表达式 * 使用数据结构:栈 * 思路: * 碰到非操作符就压入栈 * 配到操作符就取出栈顶两个元素 x、y 执行 (x op y)将这个结果入栈 * 追后即可得到结果 * 缺陷:会有很多无用的(),但结果并不影响表达式的正确性。 * @author daelly * */public class Postfix2InfixExp {public static String postfix2infix(String exp) {Stack<String> stack = new Stack<>();for(int i=0;i<exp.length();i++) {char ch = exp.charAt(i);if(isOperator(ch)) {String temp = '(' + stack.pop() + ch + stack.pop() + ')';stack.push(temp);} else {stack.push(ch+"");}}return stack.pop();}/** * 是否是操作符 * @param ch * @return */public static boolean isOperator(char ch) {return ch=='+' || ch=='-' || ch=='*' || ch=='/' || ch=='(' || ch==')';}public static void main(String[] args) {String exp = "abc*+";System.out.println(postfix2infix(exp));exp = "abc+*";System.out.println(postfix2infix(exp));exp = "abc*+defg*+h-*-";System.out.println(postfix2infix(exp));}}

0 0