中置表現:フォームOP bの表現。オペレータは、オペランドのすべての対の間で、ある場合。
Postfixの式:フォームAB OPの表現。演算子は、オペランドの各ペアのために従わされている場合。
入力:ABC ++ 出力:(A +(B + C)) 入力:AB * C + 出力:((* b)は+ c)の
分析
1。入力から次のシンボルを読みます。
シンボル2.Ifはスタックにプッシュ、オペランドです。
3.Otherwiseは、
... 3.1記号は演算子です。
... 3.2は、スタックからトップ2の値をポップします。
... 3.3は、引数として値で、オペレータを入れて、文字列を形成します。
... 3.4スタックに戻った文字列を押してください。
1 クラスソリューション{ 2 ブールisOperator(チャーX){ 3 スイッチ(X){ 4 ケース ' + ' : 5 ケース ' - ' : 6 場合 ' / ' : 7 場合 ' * ' : 8 リターン 真。 9 デフォルト: 10 リターン はfalse ; 11 } 12 } 13 14 ストリングpostToInfix(文字列式){ 15 スタック<ストリング> S = 新しいスタックの<string> (); 16 17 のために(int型 iは= 0 ; iはexp.lengthを()<; iは++ ){ 18 であれば(!isOperator(exp.charAt(I))){ 19 s.push(exp.charAt(I)+ "" ); 20 } 他{ 21 列OP1 = s.pop()。 22 列OP2 = s.pop()。 23 s.push(" ("+ OP2 + exp.charAt(I)+ OP1 + " )" ); 24 } 25 } 26 リターンs.peek()。 27 } 28 }