双方向リストを三つの一次元配列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である要素は、それぞれ双方向リストの末尾、先頭を表す。・双方向リストへの要素の追加は、一次元配列の末尾に追加
双方向リスト挿入は前後2要素のリンクを張り替える
![双方向リストを表す3つの一次元配列。要素番号は1〜6で、6の列は破線で囲まれ「一次元配列の末尾」と注記された空欄(挿入先)。elem: [1]=A, [2]=F, [3]=D, [4]=B, [5]=E、[6]は空。next: [1]=4, [2]=0, [3]=5, [4]=3, [5]=2、[6]は空。prev: [1]=0, [2]=5, [3]=4, [4]=1, [5]=3、[6]は空。Head=1、Tail=2。したがってリストの並びはA(1)→B(4)→D(3)→E(5)→F(2)である。](/data/ap/figures/ap-2023a-am-5.jpg)
選択肢
- アnext[6]=2, prev[6]=3
- イnext[6]=3, prev[6]=4
- ウnext[6]=5, prev[6]=3
- エnext[6]=5, prev[6]=4
正解と解説
正解:ウ next[6]=5, prev[6]=3
挿入前はnext[3]=5、prev[5]=3なので、要素D(要素番号3)の次は要素E(要素番号5)である。この間に新しい要素Cを配列末尾の要素番号6として挿入するので、Cの前はD、Cの後はEになる。したがってnext[6]=5、prev[6]=3となる(あわせてnext[3]とprev[5]も6に更新される)。
選択肢ごとの解説
- アnext[6]=2は末尾要素Fを指しており、Dの直後という位置と合わない。
- イnext[6]=3、prev[6]=4はDの前に挿入した場合の値で、題意と逆。
- ウ正しい。前がD(3番)、後ろがE(5番)となる。
- エprev[6]=4は要素Bを前に置くことになり、Dの次という条件に反する。
同じ分野の他の問題
- 図の2分探索木に1と0の二つの要素を順に追加したAVL木として,適切なものはどれか。2025年度 春期 午前 問6
- A,B,Cの順序で入力されるデータがある。各データについてスタックへの挿入と取出しを1回ずつ行うことができる場合,データ…2016年度 春期 午前 問5
- 次の2分探索木から要素12を削除したとき、その位置に別の要素を移動するだけで2分探索木を再構成するには、削除された要素の…2024年度 秋期 午前 問5
- 各ノードがもつデータを出力する再帰処理f(ノードn)を定義した。この処理を、図の2分木の根(最上位のノード)から始めたと…2024年度 春期 午前 問6
- 要求に応じて可変量のメモリを割り当てるメモリ管理方式がある。要求量以上の大きさをもつ空き領域のうちで最小のものを割り当て…2023年度 春期 午前 問5
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。