過去問解きまくり研究所 ホーム

令和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 である要素は,それぞれ双方向リストの末尾,先頭を表す。
・双方向リストへの要素の追加は,一次元配列の末尾に追加

〔図〕

                              一次元配列の末尾
                                    ↓
要素番号 | 1 | 2 | 3 | 4 | 5 | 6 |
elem     | A | F | D | B | E |   |   ← 6 は空き

要素番号 | 1 | 2 | 3 | 4 | 5 | 6 |
next     | 4 | 0 | 5 | 3 | 2 |   |

要素番号 | 1 | 2 | 3 | 4 | 5 | 6 |
prev     | 0 | 5 | 4 | 1 | 3 |   |

Head | 1 |        Tail | 2 |
答えと解説を見る

✓ これが正解ウnext[6] = 5 / prev[6] = 3

解説

挿入した要素の次は E、前は D になります。

設問は、三つの一次元配列で双方向リストを表したとき、要素 D の次に要素 C を挿入した後の、新しい要素の次と前の値を問うています。まず配列の番号順ではなく、先頭から順につないでたどります。先頭は 1 番の A で、次は 4 番の B、その次が 3 番の D、続いて 5 番の E、最後が 2 番の F です。末尾は 2 番なので、変数に設定された末尾の要素番号とも合います。C は配列の末尾に追加するので、空いている 6 番に入ります。入れる場所は D と、D の次にあった要素の間なので、6 番から見ると次は E がある 5 番、前は D がある 3 番です。正解は次が 5、前が 3 の組合せです。実装では、前の要素の次と、後ろの要素の前も書き換えます。

ほかの選択肢はなぜ違うのか

出典:令和5年度 秋期 応用情報技術者試験 午前 問5

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)