括弧のない分流場アルゴリズムを実装しようとしていますが、理解できません。私はウィキペディアを試しましたが、エントリは本当に悪いです. コードの実装にはほとんど問題がないはずですが、取得できない場合は実装できません。
さて: このアルゴリズムはどのように機能しますか?
これが私が理解していることです:
左から右へ、すべての数値が出力キューに追加され、すべてのオペランドがスタックに追加されます。最後に到達したら、すべてのオペランドをポップして出力に追加します
Expression: 2+5*4+3/5 ( = 2+20+0.6 = 22.6 ) Stack: +*+/ ( -> top ) OutputQueue: 5 3 4 5 2 ( -> exits)
次に、スタックをポップしてキューに追加します
OutputQueue: (insert ->) + * + / 5 3 4 5 2 ( -> exit)
私が理解している限り、フォームは次のようになります: 25435/+*+
試して解決しましょう:
5/3 ~ 1.6 + 4 ~= 5.6 * 5 ~= 28 + 2 ~= 30 (or 30.3 recurring .3 if you insist)
編集:ここで使用した逆ポーランド記法は正しいと確信しているため、問題になることはありません。
私は自分が愚かなことをしていることを知っていますが、私の人生ではそれを理解することはできません.
ウィキペディアからのものであり、他の人が私にそれを指摘しているのを見たので、アルゴリズムは優れているはずなので、誰かが私のロジックのエラーを指摘できれば、それが最も役立つと思います。どこかで何かを台無しにしているだけです。
それはキューですか?私は逆ポーランド記法を十分に扱っていると確信しています。