queue.hは、5つのデータ構造を定義しています。
1.Singlyにリンクされたリスト:リストの方法、使用中に、構造、例えばのSLIST_ENTRY独自の定義の中に埋め込まれました
/ * *片方向リンクリストの定義。 * / の#define SLIST_HEAD(名前、タイプ)\の 構造体名{\の 構造体のタイプ* slh_first。 / * 最初の要素* / \ } の#define SLIST_HEAD_INITIALIZER(ヘッド)\ {NULL} WIN32 #ifndefの に#define SLIST_ENTRY(タイプ)\の 構造体{\の 構造体のタイプ* sle_next。 / * 次の要素* / \ } #endifの / * *片方向リンクリストのアクセス方法。 * / の#define SLIST_FIRST(ヘッド)((ヘッド) - > slh_first) の#define SLIST_END(ヘッド)のNULL の#define SLIST_EMPTY(ヘッド)(SLIST_FIRST(ヘッド)== SLIST_END(ヘッド)) の#define SLIST_NEXT(ニレ、フィールド() (ニレ) - > field.sle_next)の#define SLIST_FOREACH(VAR、頭、フィールド)、\ のための((VAR)= SLIST_FIRST(ヘッド); \ (VAR)=!SLIST_END(ヘッド); \ (VAR)= SLIST_NEXT(VAR 、フィールド))/ * *片方向リンクリスト機能。 * / の#define SLIST_INIT(ヘッド){\ SLIST_FIRST(ヘッド) = SLIST_END(ヘッド)\ } の#define SLIST_INSERT_AFTER(slistelm、ニレ、フィールド)を実行{\ (ELM) - > field.sle_next =(slistelm) - > field.sle_next。\ (slistelm) - > field.sle_next = (ELM)。\ } ながら(0 ) の#define SLIST_INSERT_HEAD(ヘッド、ニレ、フィールド)を実行{\ (ELM) - > field.sle_next =(ヘッド) - > slh_first。\ (ヘッド)- > slh_first = (ELM)。\ } ながら(0 ) の#define SLIST_REMOVE_HEAD(頭、フィールド)を実行{\ (ヘッド) - > slh_first =(ヘッド) - > slh_first-> field.sle_next。\ } ながら(0)