はじめての C

リンクリスト 2

先に 進む前に、番兵について 少しだけ 述べてみましょう。

番兵には 3つの 型があります。 null ポインタ、ダミーノード (特別な、中身のない - invalid value - 項目で、番兵として 使うことが できます) それと 循環リンクです。

null ポインタ、それに ダミーノードは とても 簡単です。 でも、循環リンクって 何なんでしょう ?

循環リンクでは、リストを リング型の 構造体へと 変えて、いつ どこからでも、末尾を 見つけ出して - get the end - 次の項目へと 移ります。

リストの 各々の 型での、ほんの わずかな、基本となる 組み合わせ - basic conversation - は 次の とおりです。シンプルに 留めるために、ここでは (next ポインタのみの) 線形リスト - single linked list - を 使うことにします。

末尾が null ポインタ ▽

初期化:

list = NULL;

item の後に n を 挿入:

if (item == NULL) {
list = n;
list->next = NULL;
}
else {
n->next = item->next;
item->next = n;
}

item の後を 削除:

save = item->next;
item->next = item->next->next;

移動:

for (item = list; item != NULL; item = item->next)