以下を後置形式に変換することになっています。
(A + B * C) / (D - E * F)
私は答えのためにこれを得ました:ABC*+DEF*-/
これは正しいです?間違った後置形式を使用している場合、その後の質問はすべて正しくありません。もし私が間違っていたら、その理由を教えてもらえますか? 助けてくれてありがとう。
以下を後置形式に変換することになっています。
(A + B * C) / (D - E * F)
私は答えのためにこれを得ました:ABC*+DEF*-/
これは正しいです?間違った後置形式を使用している場合、その後の質問はすべて正しくありません。もし私が間違っていたら、その理由を教えてもらえますか? 助けてくれてありがとう。
これは古い提出物であることは知っていますが、ここに行きます
これが正しいフォームです。このように、postfix を自分で反復処理し、空のスタックから始めて infix に戻すことで、簡単に確認できます。
A
は配列の最初の要素で、数値なので、スタックにプッシュします。B and
同じことがC . Therefore your stack is now
A,B,C` にも当てはまります。
次のトークンは operator( *
) で、2 つのオペランドを取ります。したがって、スタックから上位 2 つのオペランド orB
と をポップしますC
。演算子で区切られた 2 つを結合し、スタックにプッシュします。アルゴリズムを単純化するには、すべてを括弧で囲みます。あなたのスタックは今A,(B*C)
です。
次のトークンは、別の二項演算子 ( +
) です。上記と同じプロセスを繰り返すと、スタックが(A+(B*C))
.
残りのプロセスを繰り返すと、次の式と同等の式が得られます(A+B*C)/(D-E*F)