Java 中缀转后缀

public class Test {
	/**
	 * 一:非运算符直接输出
	 * 二:遇到左括号直接入栈
	 * 三:栈顶符号优先级高于或等于即将入栈的操作符,则将高于和等于的操作符出栈,然后再入栈
	 * 四:遇右括号,输出栈中的运算符,直到遇到第一个左括号,左括号出栈抛弃
	 * :乘除优先级相等》 加减优先级相等
	 * 
	 * 中缀转后缀实例,支持10以内加减法
	 * 
	 * */
public static void main(String[] args) {
	String s="2+2*3/((2*(1+2)-4)*5)";
	char[]chars=s.toCharArray();
	Stack stack=new Stack<>();
	ArrayList list=new ArrayList<>();
	for(int i=0;iv2){
		stack.push(m);
		return ;
	}else{
		list.add(stack.pop());
		if(!stack.isEmpty()){
			popContinue(m, stack, list);
			
		}else{
			stack.push(m);
		}
	}
}
public static int getValues(char m){
	int i=0;
	if(m=='*'||m=='/'){
		i=2;
	}else if(m=='('){
		i=0;
	}else{
		i=1;
	}
	return i;
}
}

转载于:https://www.cnblogs.com/qcjd/p/9324908.html

你可能感兴趣的:(Java 中缀转后缀)