java中缀表达式转后缀表达式
时间: 2023-11-20 09:53:39 浏览: 81
Java中缀表达式转后缀表达式的方法如下:
```java
import java.util.Stack;
public class InfixToPostfix {
public static String infixToPostfix(String infix) {
Stack<Character> stack = new Stack<>();
StringBuilder postfix = new StringBuilder();
for (int i = 0; i < infix.length(); i++) {
char c = infix.charAt(i);
if (Character.isDigit(c)) {
postfix.append(c);
} else if (c == '(') {
stack.push(c);
} else if (c == ')') {
while (!stack.isEmpty() && stack.peek() != '(') {
postfix.append(stack.pop());
}
stack.pop();
} else {
while (!stack.isEmpty() && precedence(c) <= precedence(stack.peek())) {
postfix.append(stack.pop());
}
stack.push(c);
}
}
while (!stack.isEmpty()) {
postfix.append(stack.pop());
}
return postfix.toString();
}
private static int precedence(char operator) {
switch (operator) {
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
default:
return -1;
}
}
}
```
其中,`infixToPostfix`方法接收一个中缀表达式字符串,返回一个后缀表达式字符串。该方法使用了栈来实现中缀表达式转后缀表达式的过程,具体实现过程如下:
1. 遍历中缀表达式字符串中的每个字符。
2. 如果当前字符是数字,则直接将其添加到后缀表达式字符串中。
3. 如果当前字符是左括号,则将其压入栈中。
4. 如果当前字符是右括号,则将栈中的元素弹出并添加到后缀表达式字符串中,直到遇到左括号为止。
5. 如果当前字符是运算符,则将栈中的元素弹出并添加到后缀表达式字符串中,直到栈为空或栈顶元素为左括号或栈顶运算符优先级低于当前运算符,然后将当前运算符压入栈中。
6. 遍历完中缀表达式字符串后,将栈中剩余的元素弹出并添加到后缀表达式字符串中。
7. 返回后缀表达式字符串。
阅读全文