这是我的代码:
public String ShuntingYard(String input) {
Tokenizer tokens = new Tokenizer(input);
output = new LinkedList<String>();
stack = new MyStack<String>(new LinkedList<String>(), new LinkedList<String>());
while (tokens.hasNextToken()){
String token = tokens.getNextToken();
if (isOperator(token)){
while (!stack.isEmpty() && isOperator(stack.peek())){
if ((leftassoc(token)&&precedence(token)<=precedence(stack.peek())) ||
(precedence(token)<precedence(stack.peek()))){
output.add(stack.pop());
}
else break; }
stack.push(token);
}
output.add(token);
}
while (!stack.isEmpty())
output.add(stack.pop());
return output.toString();
}
输入 3 + 5 * 6 + 7,它应该返回 3 5 6 * + 7 +,但我得到的是 3 + 5 * 6 + 7 + *。我很困惑为什么,因为我遵循了维基百科页面上的算法说明......我在其他地方搞砸了吗?我在这里先向您的帮助表示感谢!