8

以下のような表現があります。MIN(MAX(AVG(AVG(4,2),2,3),SUM(1,2))) 分置場アルゴリズムを実装して、中置記号を逆ポーランド語表記に変換しました。関数 MAX 、 MIN 、および AVG を 2 つの引数で追加します。しかし、可変引数を実装したい場合、各関数が中置式にいくつの引数を持っているかを知る必要があるとします。誰かが私に教えてもらえますか?infixをrpnに変換する際の各関数の引数の?

4

4 に答える 4

3

これが私が最終的にやった方法です。トークンが開き括弧の場合、出力キューに追加します。次に、RPN 出力を変換または実行するときに、関数呼び出しトークンに遭遇すると、開いた括弧に遭遇するまでスタックからアイテムをポップし、それを破棄し、その間のすべてを関数の引数と見なします。

おそらくきちんとした解決策ではありませんが、魅力的に機能しました:)

于 2015-03-31T07:27:36.987 に答える