public static void InFixToPostFix() {
Stack<Character> s = new Stack<Character>();
String expression;
Character token;
int i = 0;
Scanner sc = new Scanner(System.in);
expression = sc.next();
while ((token = expression.charAt(i++)) !='='){
if (token >='a'&&token <='z')
System.out.print(token + " ");
else{
switch (token) {
case ')':
while (!s.empty() && s.peek() != '(') {
System.out.print(s.pop() + " ");
}
//只被弹出但是并不输出
s.pop();
break;
case '(':
s.push(token);
break;
case '^':
while (!s.empty() && !(s.peek() == '^' || s.peek() == '(')) {
System.out.print(s.pop());
}
s.push(token);
break;
case '*':
case '/':
while (!s.empty() && s.peek() != '+' && s.peek() != '-' && s.peek() != '(') {
System.out.print(s.pop());
}
s.push(token);
break;
case '+':
case '-':
while (!s.empty() && s.peek() != '(') {
System.out.print(s.pop() + " ");
}
s.push(token);
break;
}
}
}
while (!s.empty())
{
System.out.print(s.pop());
}
System.out.println();
}
中缀表达式转化为后缀表达式
最新推荐文章于 2022-10-23 22:06:17 发布