IPA過去問ドリル

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

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

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

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

正解:ウ

解説

1本のスタックだけを使う場合,出力できるデータ列はプッシュとポップの順序によって制限されます。C,B,D,Aという出力は,A・B・Cの順にプッシュした後Cをポップ(出力C),続けてBをポップ(出力B),その後Dをプッシュしてポップ(出力D),最後に残っていたAをポップ(出力A)とすることで実現でき,スタックの構造に矛盾しません。

選択肢ごとの解説

  • 誤り。Aを出力した直後にDを出力するには,B,C,Dをこの順でプッシュしてからポップする必要がありますが,その場合ポップの順序はD,C,Bとなり,指定されたA,D,B,Cの順にはなりません。
  • 誤り。Bを出力した後にDを出力するにはC,Dをプッシュしてポップしますが,このときスタックにはA,Cが残っており,次に出力すべきAを取り出すには先にCを取り出す必要があるため,指定順にはできません。
  • 正しい。A,B,Cの順にプッシュしてCをポップ(出力C),Bをポップ(出力B),その後Dをプッシュしてポップ(出力D),最後にAをポップ(出力A)とすることで実現できます。
  • 誤り。Dを出力するには全てをプッシュしてポップする必要がありますが,その直後はC,A,Bの順でしか取り出せず,指定されたD,C,A,Bの順にはなりません。
基本情報技術者の過去問を演習モードで解く