Java 创建前缀表示法表达式
我正在尝试将表达式更改为前缀表示法。我能够理解后缀符号,我想知道在创建前缀类时是否可以利用后缀类的基本模板。我想表达一种像。。。 (6*(24+81))并具有:*6+24 81的输出。这在不跟踪级别的情况下是可能的吗?…这意味着当循环输入表达式的括号部分时,是否需要跟踪变量?我只是很难想象这个结构是如何工作的 这是我的后缀码:Java 创建前缀表示法表达式,java,Java,我正在尝试将表达式更改为前缀表示法。我能够理解后缀符号,我想知道在创建前缀类时是否可以利用后缀类的基本模板。我想表达一种像。。。 (6*(24+81))并具有:*6+24 81的输出。这在不跟踪级别的情况下是可能的吗?…这意味着当循环输入表达式的括号部分时,是否需要跟踪变量?我只是很难想象这个结构是如何工作的 这是我的后缀码: static Stack operatorStack = new Stack(); String ConvertToPostfix(String exp) {
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;
}
静态堆栈操作符Stack=new Stack();
字符串ConvertToPostfix(字符串扩展){
exp=“(“+exp+”);
int i;
字符标记;
字符串输出=”;
对于(i=0;i
这是一个随机的例子:
要更改线性表示(即表达式为字符串),只需更改遍历树的方式
您需要做的是:
- 学习如何表现(总是方便)
- 将表达式解析为一棵树(相当简单),
StringTokenizer
是您的朋友
- 将三个遍历过程翻译成Java
- 无论你的教授要求什么程序,都可以打电话。(顺便说一句,多听教授的话不会有什么坏处。)
希望这有帮助