令和5年度 秋期 応用情報技術者試験 午前 問5
テクノロジ/アルゴリズム双方向リストを三つの一次元配列 elem[i],next[i],prev[i] の組で実現する。双方向リストが図の状態のとき,要素 D の次に要素 C を挿入した後の next[6],prev[6] の値の組合せはどれか。ここで,双方向リストは次のように表現する。 ・双方向リストの要素は,elem[i] に値,next[i] に次の要素の要素番号,prev[i] に前の要素の要素番号を設定 ・双方向リストの先頭,末尾の要素番号は,それぞれ変数 Head,Tail に設定 ・next[i],prev[i] の値が 0 である要素は,それぞれ双方向リストの末尾,先頭を表す。 ・双方向リストへの要素の追加は,一次元配列の末尾に追加

出典:令和5年度 秋期 応用情報技術者試験 午前 問5
- アnext[6]=2,prev[6]=3
- イnext[6]=3,prev[6]=4
- ウnext[6]=5,prev[6]=3
- エnext[6]=5,prev[6]=4
正解:ウ
解説
図の状態のリストは Head=1 から,1(A)→4(B)→3(D)→5(E)→2(F) の順につながっています(next[1]=4,next[4]=3,next[3]=5,next[5]=2)。新しい要素 C は一次元配列の末尾,つまり要素番号6に追加します。D(要素番号3)の次に C(要素番号6)を挿入するので,C の次はもともと D の次だった E(要素番号5),C の前は D(要素番号3)です。よって next[6]=5,prev[6]=3 となります。
選択肢ごとの解説
- ア誤り。next[6]=2 は F を指しており,D の次への挿入になりません。
- イ誤り。prev[6]=4 は B を指しています。C の前は D(要素番号3)です。
- ウ正しい。C の次は E(next[6]=5),C の前は D(prev[6]=3)です。あわせて next[3]=6,prev[5]=6 に更新されます。
- エ誤り。next[6]=5 は正しいものの,prev[6]=4(B)は D を指していないため誤りです。