このようにすると,ここのデータは順にアクセス(シーケンシャルアクセス)することにな り,その速度は一般に遅い.一方,データの削除と挿入は,データの位置を記憶するポイ ンターを変更するだけなので,高速になる.
1 typedef struct tagListNode 2 { 3 struct tagListNode *prev; /* 前の要素へのポインタ */ 4 struct tagListNode *next; /* 次の要素へのポインタ */ 5 int data; /* この要素がもっているデータ */ 6 } ListNode;
配列は目的のデータにランダムアクセスが可能で,目的のデータの値を得たり,データの 値の変更が高速にできる.添え字を指定するだけで,それらが可能である.しかし,デー タの削除と挿入には計算回数が多くなる.たとえば,10番目のデータを削除するとなると, 11番目を10番目に移動,12番目を11番目に移動,13番目を12番目に移動 とデータ を順次移動させる必要がある.
一方,リストは目的のデータにアクセスするためには,シーケンシャルアクセス 6を行う. そのため,データへのアクセス回数が多くなり配列より低速になる.しかし,データの削 除と挿入は簡単で,その前後へのノードのポインターの値を変更するだけである.したがっ て,挿入と削除は高速になる.
[転載について]
このペー
ジ中のリスト10のプログラムは,教科書として使用している以下の書籍
書名 | プログラミングの宝箱 アルゴリズムとデータ構造 ISBN4-7973-2419-8 |
著作者 | 紀平拓男・春日伸弥 |
出版社 | ソフトバンク パブリッシング株式会社 |