ITパスポートの過去問
平成28年度 秋期
テクノロジ系 問92

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

平成28年度 秋期 ITパスポート試験 テクノロジ系 問92 (訂正依頼・報告はこちら)

後に入れたデータが先に取り出されるデータ構造(以下、スタックという)がある。これを用いて、図に示すような、右側から入力されたデータの順番を変化させて、左側に出力する装置を考える。この装置に対する操作は次の3通りである。

①右側から入力されたデータをそのまま左側に出力する。
②右側から入力されたデータをスタックの1番上に積み上げる。
③スタックの1番上にあるデータを取り出して左側に出力する。

この装置の右側から順番にデータA、B、C、Dを入力した場合に、この①~③の操作を組み合わせても、左側に出力できない順番はどれか。
問題文の画像
  • B、A、D、C
  • B、D、C、A
  • C、B、D、A
  • C、D、A、B

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

問題文の①~③を使って各選択肢の順番にデータが取り出せるかどうか確認していきましょう。

1.B、A、D、Cの順にデータを取り出すためには、
以下の順番でデータを入出力すればよいです。
①Aのデータをスタックに積み上げる
②Bのデータをそのまま出力する
③Aのデータをスタックから取り出して出力する
④Cのデータをスタックに積み上げる
⑤Dのデータをそのまま出力する
⑥Cのデータをスタックから取り出して出力する
よって、誤りです。

2.B、D、C、Aの順にデータを取り出すためには、
以下の順番でデータを入出力すればよいです。
①Aのデータをスタックに積み上げる
②Bのデータをそのまま出力する
③Cのデータをスタックに積み上げる
④Dのデータをそのまま出力する
⑤Cのデータをスタックから取り出して出力する
⑥Aのデータをスタックから取り出して出力する
よって、誤りです。

3.C、B、D、Aの順にデータを取り出すためには、
以下の順番でデータを入出力すればよいです。
①Aのデータをスタックに積み上げる
②Bのデータをスタックに積み上げる
③Cのデータをそのまま出力する
④Bのデータをスタックから取り出して出力する
⑤Dのデータをそのまま出力する
⑥Aのデータをスタックから取り出して出力する
よって、誤りです。

4.C、D、A、Bの順にデータを取り出すためには、
以下の順番でデータを入出力すればよいです。
①Aのデータをスタックに積み上げる
②Bのデータをスタックに積み上げる
③Cのデータをそのまま出力する
④Dのデータをそのまま出力する
④の次に取り出せるデータは、②で積み上げたBです。
よって、選択肢の順番でデータを取り出すことはできないため、正解です。

参考になった数9

02

正解は、4です。

C、D、A、Bの順で出力することはできません。
下記のようになります。

① Aをスタックへプッシュします。
② Bをスタックへプッシュします。
③ Cをそのまま出力します。
④ Dをそのまま出力します。
⑤ スタックからポップすると、Bが取り出されるのでBしか出力できません。
⑥ もう1度ポップすると、Aが取り出されるもののBの後にしか出力できません。

参考になった数5

03

1 「B、A、D、C」の順に取り出すには下記のようになりますので、取り出すことは可能です。

1.Aを②の手順でスタックに入れる
2.Bを①の手順でそのまま左に出力する(B出力)
3.Aを③の手順で取り出して出力する(A出力)
3.Cを②の手順でスタックに入れる
4.Dを②の手順でスタックに入れる
5.上から順に取り出す(D→Cの順に出力)


2 「B、D、C、A」の順に取り出すには下記のようになりますので、取り出すことは可能です。

1.Aを②の手順でスタックに入れる
2.Bを①の手順でそのまま左に出力する(B出力)
3.Cを②の手順でスタックに入れる
4.Dを②の手順でスタックに入れる
5.上から順に取り出す(D→C→Aの順に出力)



3 「C、B、D、A」の順に取り出すには下記のようになりますので、取り出すことは可能です。

1.Aを②の手順でスタックに入れる
2.Bを②の手順でスタックに入れる
3.Cを①の手順でそのまま左に出力する(C出力)
4.Bを③の手順でスタックから取り出す(B出力)
4.Dを①の手順でそのまま左に出力する(D出力)
5.Aを③の手順でスタックから取り出す(A出力)


4 「C、D、A、B」の順に取り出すには、C→Dの順に取り出してしまうとA→Bの順には取り出すことができません。
よって正解は4となります。

1.Aを②の手順でスタックに入れる
2.Bを②の手順でスタックに入れる
3.Cを①の手順でそのまま左に出力する(C出力)
4.Dを①の手順でそのまま左に出力する(D出力)
5.この時点で、B→Aの順にしか取り出すことができない

参考になった数2