過去問解きまくり研究所 ホーム

平成28年度 秋期 午前 問3

基礎理論

スタックに関する問題

逆ポーランド表記法で表された式を評価する場合,途中の結果を格納するためのスタックを用意し,式の項や演算子を左から右に順に入力し処理する。スタックが図の状態のとき,入力が演算子となった。このときに行われる演算はどれか。ここで,演算は中置表記法で記述するものとする。

〔図:スタックの状態〕

スタックの位置格納されている項
先頭(いちばん後に入れた)D
2 番目C
3 番目B
底(いちばん先に入れた)A
答えと解説を見る

✓ これが正解ウC 演算子 D

解説

後から積んだDが右、先に積んだCが左になります。

逆ポーランド表記法を評価するとき、演算子が入力されたらすることは決まっています。スタックから項を二つ取り出し、その二つを演算し、結果をスタックへ戻す、という手順です。ここで効いてくるのがスタックの性質で、後から入れたものが先に出てきます。図の状態は底から A・B・C の順に積み上げ、最後に D を入れた姿なので、取り出されるのは D が先、その次が C です。問題は、取り出した二つを中置表記法でどちら側に書くかです。逆ポーランドで C D と並べてから演算子を書いた式は、中置に直すと C を左、D を右に置いた形になります。つまり先に積まれた C が左、後から積まれた D が右です。よって行われる演算は C を左、D を右に置いた形になります。取り出す順番と書く順番がちょうど逆になる点が、この問のいちばんの取り違えどころです。加算のように左右を入れ替えても答えが同じ演算なら違いは現れませんが、減算や除算では結果が変わるので、左右の決め方そのものが問われています。

ほかの選択肢はなぜ違うのか

出典:平成28年度 秋期 応用情報技術者試験 午前 問3

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)