基本情報技術者平成18年秋期 午前問13

午前問13

表は,配列を用いた連結セルによるリストの内部表現であり,リスト[東京,品川,名古屋,新大阪]を表している。このリストを[東京,新横浜,名古屋,新大阪]に変化させる操作はどれか。ここで,A(i,j)は表の第i行第j列の要素を表す。例えば,A(3,1)=“名古屋”であり,A(3,2)=4である。また,→は代入を表す。
13.gif/image-size:179×172

分類

テクノロジ系 » アルゴリズムとプログラミング » データ構造

正解

解説

設問の表は、1つの行がリスト内の一要素に対応しており、第1列は要素に格納されているデータ、第2列は次要素の行番号を示しています。
13_1.gif/image-size:158×172
変更前のリストと変更後のリストを比較すると、差異は2番目の"品川"と"新横浜"とわかります。
  • 変更前[東京,品川,名古屋,新大阪]
  • 変更後[東京,新横浜,名古屋,新大阪]
設問のリスト表現に従うと、"品川"を"新横浜"に入れ替えるためには、"東京"行の第2列に"新横浜"の行番号である"5"を、"新横浜"行の第2列には"名古屋"の行番号である"3"を代入する操作、すなわち"5→A(1,2)"および"3→A(5,2)"が必要です。
13_2.gif/image-size:547×114
これを踏まえて、各選択肢の操作が適切なものであるかどうかを検証します。
  • [5→A(1,2)]
    "東京"行の第2列に5を代入する操作です。

    [A(A(1,2),2)→A(5,2)]
    第1の操作によってA(1,2)の値は5に変更されています。つまりA(5,2)→A(5,2)という操作になります。この操作の結果、A(5,2)は(null)になります。

    A(5,2)が空になってしまうため誤りです。
  • [5→A(1,2)]
    "東京"行の第2列に5を代入する操作です。

    [A(A(2,2),2)→A(5,2)]
    A(2,2)の値は3なので、A(3,2)→A(5,2)という操作になります。この操作の結果、A(5,2)にはA(3,2)の値である4が代入されます。

    A(5,2)が4になってしまうため誤りです。
  • 正しい。
    [A(A(1,2),2)→A(5,2)]
    A(1,2)の値は2なので、A(2,2)→A(5,2)という操作になります。この操作の結果、A(5,2)にはA(2,2)の値である3が代入されます。

    [5→A(1,2)]
    "東京"行の第2列に5を代入する操作です。

    A(1,2)=5、A(5,2)=3 となるので適切です。
  • [A(A(2,2),2)→A(5,2)]
    A(2,2)の値は3なので、A(3,2)→A(5,2)という操作になります。この操作の結果、A(5,2)にはA(3,2)の値である4が代入されます。

    [5→A(1,2)]
    "東京"行の第2列に5を代入する操作です。

    A(5,2)が4になってしまうため誤りです。
© 2010-2020 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop