0

以下を後置形式に変換することになっています。 (A + B * C) / (D - E * F)

私は答えのためにこれを得ました:ABC*+DEF*-/

これは正しいです?間違った後置形式を使用している場合、その後の質問はすべて正しくありません。もし私が間違っていたら、その理由を教えてもらえますか? 助けてくれてありがとう。

4

2 に答える 2

1

これは古い提出物であることは知っていますが、ここに行きます

これが正しいフォームです。このように、postfix を自分で反復処理し、空のスタックから始めて infix に戻すことで、簡単に確認できます。

Aは配列の最初の要素で、数値なので、スタックにプッシュします。B and同じことがC . Therefore your stack is nowA,B,C` にも当てはまります。

次のトークンは operator( *) で、2 つのオペランドを取ります。したがって、スタックから上位 2 つのオペランド orBと をポップしますC。演算子で区切られた 2 つを結合し、スタックにプッシュします。アルゴリズムを単純化するには、すべてを括弧で囲みます。あなたのスタックは今A,(B*C)です。

次のトークンは、別の二項演算子 ( +) です。上記と同じプロセスを繰り返すと、スタックが(A+(B*C)).

残りのプロセスを繰り返すと、次の式と同等の式が得られます(A+B*C)/(D-E*F)

于 2014-03-12T13:58:56.303 に答える