このようにすると,ここのデータは順にアクセス(シーケンシャルアクセス)することにな り,その速度は一般に遅い.一方,データの削除と挿入は,データの位置を記憶するポイ ンターを変更するだけなので,高速になる.
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 |
| 著作者 | 紀平拓男・春日伸弥 |
| 出版社 | ソフトバンク パブリッシング株式会社 |