「1」のタイトルを注意してください、そして、どのような状況の下で、リストは、リンクされたリストデータ構造として使用されますか?
答えは - リストは重要な要素の数が含まれている、または要素は、長い文字列のリストに含まれています。
[OK]を、私たちはもっと身近に起因リスト、直接ノードのリンクリストとリストを実装して与えられた次のステップです。
リストノード:
{//これは、定義されたリストで見ることができますtypedefは構造体listNodeは二重にリンクされたリストであります
構造体listNode * PREV。
次のstruct listNode *;
void *型の値。
} listNode。
リスト:
typedefは構造体のリスト{
listNode *頭、尾*;
unsigned long型のlen;
void *型(* DUP)(ボイド*のPTR); //コピー機能のノード値
無効(*無料)(ボイド*のPTR);放出機能の//ノード値
無効(*試合)(void *型のキーのvoid * ptrに、); //ノード値比較機能
}リスト;
まず、第1 listNodeとリストのサイズを説明しました。sizeof(listNode)= 12、はsizeof(リスト)= 24。3つの関数ポインタのリストがあります覚えておいてください。テスト中に下記の対:
情報マップはlistTのみメンバ関数の一覧と関数ポインタ、非常に明白です。
これは、計画上のリスト構造です。
最後に、より多くの* listNode値がvoidとして定義する理由は、言うには?
これはDUP、フリー、match関数のリストは、ノード固有の値の関数の種類に応じて設定することができるように、マルチ状態を形成する値の異なる種類のさまざまを節約することができるので、値は、*が無効に設定されています。