IPA過去問ドリル

平成22年度 秋期 基本情報技術者試験 午前 問5

テクノロジ/アルゴリズム

A,B,C,Dの順に到着するデータに対して,一つのスタックだけを用いて出力可能なデータ列はどれか。

出典:平成22年度 秋期 基本情報技術者試験 午前 問5

正解:ウ

解説

スタックは後入れ先出し(LIFO)の構造なので,到着順A,B,C,Dのデータをどこでpush(押込み)とpop(取出し)に区切るかによって,出力できる順序が決まります。C,B,D,Aの場合,A,B,Cの順にpushしてからC,Bの順にpopし,続けてDをpushしてすぐpopし,最後に残ったAをpopすれば実現できます。他の選択肢は,出力しようとした時点でスタックの先頭に別のデータが残っており,LIFOの規則に反してしまいます。

選択肢ごとの解説

  • 誤り。Aを最初に出力した後B,Cをpushすると,スタックの先頭はCになるため,次にBを出力することができません。
  • 誤り。Bを出力するにはAをpush済みである必要があり,その後Dを出力するにはCもpushしている必要がありますが,そうするとスタックの先頭はCとなり,次にAを出力できません。
  • 正しい。A,B,Cの順にpushしてC,Bの順にpopし,続けてDをpushしてすぐpopし,最後に残ったAをpopすれば,この順序を実現できます。
  • 誤り。Dを最初に出力するにはA〜Dをすべてpushしている必要があり,その後Cを出力するとスタックの先頭はBになるため,次にAを出力できません。
基本情報技術者の過去問を演習モードで解く