2016-10-17 8 views
-4

私はGoogle上で多くのアルゴリズムを見つけましたが、後置に変換する実行可能なアルゴリズムが見つかりません。どのようにC#の後置式に中立式を変換するには?助けてください...中置式をC#の後置式に変換する方法は?

+0

この投稿を見てくださいhttp://stackoverflow.com/questions/1438030/infix-to-postfix-converterまたはこの1つhttp://www.codeproject.com/Tips/370486/Converting-InFix-to -PostFix-using Csharp-VB-NET – Mulflar

答えて

0

これはプログラムの学習のための素晴らしい小さなプロジェクトです。 2つの部分があります。コードを解析してツリーをpostfixとして出力します。各ツリーノードは、ルートノードとして4 + (5/6)+であり、子が4と5/6の2つの子を持つ演算子です。 5/6ノードを深く見ると、2人の子供がいる親が見つかります。親は/、子は5および6です。

解析が最も難しい部分です。式を解析するには、解析する必要があるものを見て、演算子を見つけて、演算子の残されたものと正しいものを書き留めます。演算子はノードで、子ノードはParse(stuff to the left)Parse(stuff to the right)です。マイナスに注意する必要があります(これは単項演算子であり、厳密には中立ではありません)。マイナスを特別なケースとして扱うことをお勧めします。-4は、の子を1つ持つマイナスノードではなく、-4として解析する必要があります。方程式を解析するとき、すべての内部ノードは演算子でなければならず、すべての葉ノードは数字になります。

解析した後、印刷してください。ルートノードの場合、print(node)は "("、左の子(再帰的に印刷する)、右の子(再帰的に印刷する)、演算子を、次に式(ノード)を ")"で閉じます。

私はこのアルゴリズムへのリンクを用意していませんが、自分で実装すれば、実際にはもっと大きくなります。

関連する問題