IPA過去問ドリル

平成30年度 春期 基本情報技術者試験 午前 問6

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

リストを二つの1次元配列で実現する。配列要素box[i]とnext[i]の対がリストの一つの要素に対応し,box[i]に要素の値が入り,next[i]に次の要素の番号が入る。配列が次の状態の場合,リストの3番目と4番目との間に値がHである要素を挿入したときのnext[8]の値はどれか。ここで,next[0]がリストの先頭(1番目)の要素を指し,next[i]の値が0である要素はリストの最後を示し,next[i]の値が空白である要素はリストに連結されていない。 添字:0,1,2,3,4,5,6,7,8,9 box:(空欄),A,B,C,D,E,F,G,H,I next:1,5,0,7,(空欄),3,(空欄),2,(空欄),(空欄) (注:本サイトでは原問題の表を文字表記に変換しています)

出典:平成30年度 春期 基本情報技術者試験 午前 問6

正解:ウ

解説

この配列表現では,next[0]から順にnext[i]をたどることでリストの並び順が分かります。next[0]=1よりbox[1]=A,next[1]=5よりbox[5]=E,next[5]=3よりbox[3]=C,next[3]=7よりbox[7]=G,next[7]=2よりbox[2]=Bとなり,リストの並びはA,E,C,G,B(3番目がC,4番目がG)です。3番目(C,添字3)と4番目(G,添字7)の間に値Hをもつ未使用の要素(添字8)を挿入するには,next[3]の値を8に変更し,next[8]には元のnext[3]の値であった7を設定します。

選択肢ごとの解説

  • 誤り。3はCの添字であり,next[8]に設定すべき値ではありません。next[3]の方を8に更新するのであって,next[8]の値ではありません。
  • 誤り。5はEの添字であり,next[8]の値としては無関係です。
  • 正しい。挿入前はnext[3]=7でCの次がGでした。CとGの間にHを挿入すると,next[3]は8(Hの添字)に変更し,next[8]には元のnext[3]の値であった7を設定するので,next[8]=7です。
  • 誤り。8はHの添字そのものであり,next[8](Hの次の要素を指す値)には設定しません。
基本情報技術者の過去問を演習モードで解く