
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
逆ポーランド記法(後置記法)で表された式「5 4 3 * + 2 1 + −」の計算結果を求める問題。スタックを用いた評価手順を理解しているかを問う。
後置記法の式を、スタックを使って左から順に評価する問題。
① 後置記法: 数値はスタックに積み、演算子が来たら上の2つで計算して積み直す(引き算は「先に積んだ方−後の方」)
② 5 4 3 → *で5 12 → +で17 → 2 1 +で17 3 → −で14
③ 14(②)
左から順に処理し、数値はスタックに積み、演算子が来たら、スタックの上から2つを取り出して演算し、結果を積む。5、4、3を積み、「*」で4×3=12、スタックは(5,12)。「+」で5+12=17。次に2、1を積み、「+」で2+1=3、スタックは(17,3)。最後に「−」で17−3=14。したがって結果は14で、②が正しい。
■ スタックとは
スタックは、データを上に積み重ねていき、取り出すときは一番上(最後に積んだもの)から取り出す仕組みです(皿を積み重ねて上から取るイメージ)。
■ 逆ポーランド記法の読み方
数値はそのままスタックに積み、演算子(+、−、*)が来たら、スタックの上から2つを取り出して計算し、結果を積み直します。「−」では、先に積んであった(下にあった)値から、後に積んだ(上にあった)値を引きます。この問題の最後の「−」は、17−3です。
逆ポーランド記法は、被演算子を先に、演算子を後に書く記法で、スタックで括弧なしに評価できる。引き算・割り算は、先に取り出した方が右側のオペランドになる点に注意。
キーワード: 逆ポーランド記法、後置記法、スタック、式の評価、データ構造、情報工学部門