なぜ配列ではなくリスト?
配列は番号で素早く読めますが、要素数を先に決める必要があります。単方向リストは、あとから増減しやすいのが強みです。
- 配列は番号で直接アクセスできる
- リストは先頭から順番にたどる
- リストは挿入・削除で形を変えやすい
head を入口にして、挿入 と 削除 で矢印がどうつなぎ替わるかを、図で確認できます。
配列は番号で素早く読めますが、要素数を先に決める必要があります。単方向リストは、あとから増減しやすいのが強みです。
リスト全体は head から始まります。各ノードは data と next を持ち、最後は NULL で終わります。
head は最初のノードを指すnext は次のノードを指すNULL は「もう次がない」印途中に新しいノードを差し込むときは、先に newNode の行き先を決めてから、前のノードの next を変えます。
newNode.next をつなぐprev.next を newNode に変える削除では、消すノードそのものよりも、前のノード が次にどこを指すかが重要です。飛び越すイメージで考えます。
target = prev.next を確認するprev.next = target.next で飛び越す参照中のポインタ で、いま注目しているノードを確認するポインタ付け替え で、どの参照が何から何へ変わったかを見るリスト本体 が最後まで HEAD → ... → NULL でつながっているか確かめる