一方向リストではそれぞれのノードには自分自身の次に来るノードへのポインタ変数(*next_p)しかありませんでしたが、双方向リストは自分自身の次のノードへのポインタ変数と自分自身の前のノードへのポインタ変数(*prev_p)を持つものです。双方向リストはポインタの管理は複雑になりますが、検索などを行う際に一方向リストに比べて効率の良いアルゴリズムが利用できるなど、豊富なリストの操作が可能になります。
双方向リストでの型の宣言は、例えば次のようなものです。/*** name_t 型(ノード)の宣言 ***/ typedef struct name_tag{ struct name_tag *prev_p; /* 前のノードへのポインタ */ char name[10]; /* 名前 */ double phone; /* 電話番号 */ struct name_tag *next_p; /* 次のノードへのポインタ */ } name_t;
2003年11月22日 16:50 更新