完全に括弧で囲まれていないシーケンスを中置から後置に変換する必要があります。これもスタックを使用する必要があります。オペレータを格納するためのスタックがあります。適切な演算子が変換された後置シーケンスの正しい場所に出力されるようにするには、演算子の優先順位を決定する必要があります。擬似コードは次のとおりです。
do if (次の入力は左括弧) 左括弧を読み取り、スタックにプッシュします。else if (次の入力が数値またはその他のオペランド) オペランドを読み取り、出力に書き込みます。else if (次の入力は操作記号の 1 つです) { 次の 3 つのいずれかが発生するまで、操作をスタックからポップして出力します。(1) スタックが空になる、(2) スタック上の次の記号が左括弧である、または(3) スタック上の次のシンボルは、次の入力シンボルよりも優先順位の低い操作です。これらの状況のいずれかが発生した場合、ポップを停止し、次の入力シンボルを読み取り、このシンボルをスタックにプッシュします。 } else { 次の入力記号 (右括弧である必要があります) を読み取って破棄します。スタック上の次のシンボルが左括弧になるまで、スタックから操作をポップして出力します。(左括弧が見つからない場合は、括弧のバランスが取れていないことを示すエラー メッセージを出力して停止します。) 最後に、左括弧をポップして破棄します。while (読み取るべき式は他にもあります);
太字のテキストは、私にとって紛らわしい部分です。これに対するアプローチについて誰か提案がありますか?さらに情報が必要な場合はお知らせください....