0

これらの 2 つの例を infix から postfix に変換するにはどうすればよいですか?

Example 1:
max = (a > b) ? a : b

Example 2:
(a != 0) ? ((b != 0) ? True : False) : False

どちらの式でも、括弧を削除するだけでよいと思いました。しかし、後置から中置に変換しようとすると、式が無効になります。私は簡単な操作を行う方法を知っています:

Infix:     (((a + b) * (c + d) + a) * c - 6) * b

Postfix:   a b + c d + * a + c * 6 - b *

...しかし、max 式と boolean 式を変換する方法がわかりません。

4

1 に答える 1

0

「+」、「-」、および「*」をブール演算子または max / min 関数とは別の操作として考えるのではなく、「これらはすべて 2 つのオペランドを持つ演算子です - - つまり、二項演算子です。」

次に、問題は式ツリーを設定して、ルートが演算子 ('+'、'-'、'max' など) になり、子がオペランドになるようにすることです。infix または postfix の生成は、単に式ツリーをどのようにトラバースするかの問題です。

于 2014-03-15T00:02:44.250 に答える