キュー(スタックではない)を使ってプレフィックスを評価する必要があります。接頭辞はキューを使用して評価されますか?
+ 3 * 2 1
is equivalent to 3+(2*1) = 5.
デキューとエンキューを使用してキューを何度もループすることを考えています。パターン "operator" + "number" + "number"が見つかった場合は、3回デキューし、キューに残っている数字だけが残るまで結果をエンキューします。
- 演算子と数値が異なる2種類あり、1つのキューに保存する必要があります
while size(q)>1 if elements are in this pattern: an operator is followed by 2 numbers. operator <--dequeue(q); number1 <--dequeue(q); number2 <--dequeue(q); int a = apply(operator, number1, number2); enqueue (q, a); else if the element is a number or operator: element <-- dequeue(q); enqueue (q, element); return dequeue(q);
私のアルゴリズムは、2つの問題があります。どのようにして "+"をint待ち行列に保存できますか?
- 2 3 +は無効な入力ですが、最終的には5を返します.2と3は右にエンキューされ、+ 2になります。3入力が無効の場合はどうすればよいですか?
感謝
もっと良いアルゴリズム(スタックなし)のヒント?この投稿の –
? http://stackoverflow.com/questions/14912045/algorithm-to-evaluate-prefix-expression \ –
これを理解するのに問題はありますか? –