22.4 まとめ

リンクトリスト

割り当てメモリを数珠繋ぎにすることで、不定量のメモリを扱うことが できる。
    strcut LIST {
        struct LIST *next; /* 次の要素へのポインタ */
        void *data;        /* 実際のデータへのポインタ */
    };

ポインタ next には次のオブジェクトのアドレスを保存する。最後の オブジェクトであるならば、NULL ポインタを代入しておく。

追加挿入

リンクトリストの最後尾へのオブジェクトの追加の場合は、オブジェクトを 割り当てた後、リストの最後尾のオブジェクトの next に割り当てたオブジェクト のアドレスを代入するだけで良いが、リストに新しいオブジェクトを挿入する 場合には、挿入する前のオブジェクトの next ポインタと挿入するオブジェクトの next ポインタを変更する必要がある。

削除

リストからのオブジェクトの削除においては、next ポインタの調整をした後に オブジェクトのメモリからの削除を行わなければならない。また、先頭オブジェクト のアドレスの持ち方によっては、先頭への挿入や削除の場合のみ特別な操作が 必要になる場合がある。

応用

リストの応用として、双方向(前後)のポインタを持たせる場合や、 更にその応用として先頭と末尾のポインタを繋げてリング状にするなどの場合 がある。



最初のページ 戻る 次へ 最後のページ 目次
Hiroyasu Asami