平成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
- ア3
- イ5
- ウ7
- エ8
正解:ウ
解説
この配列表現では,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の次の要素を指す値)には設定しません。