これが私のコードです:
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+*を取得します。ウィキペディアのページにあるアルゴリズムの指示に従ったので、なぜか混乱しています...どこか別の場所で混乱していますか?よろしくお願いします!