我正在尝试将表达式更改为前缀表示法。我能够弄清楚后缀表示法,我想知道在创建我的前缀类时是否可以利用我的后缀类的基本模板。我想要一个类似... (6 * ( 24 + 81)) 的表达式并输出:* 6 + 24 81。这是否可能不跟踪级别?...意思是我需要一个当我的循环进入表达式的括号部分时跟踪变量?我只是很难想象结构是如何工作的。
这是我的后缀代码:
static Stack operatorStack = new Stack();
String ConvertToPostfix(String exp) {
exp = "("+exp+")";
int i;
char token;
String output = "";
for (i = 0; i < exp.length(); i++) {
token = exp.charAt(i);
if (Character.isLetterOrDigit(token) == true)
output += token;
else if (token == '(')
operatorStack.push(token);
else if (token == ')') {
char topChar;
while ((topChar = peekAtTop()) != '(') {
output += topChar;
popAtTop();
}
operatorStack.pop();
}
else {
while (priority(token) <= priority(peekAtTop())) {
output += peekAtTop();
popAtTop();
}
operatorStack.push(token);
}
}
return output;
}