The c implementation of a linked list in the MIT test. Used a lot of macro definitions:
/ * List declarations. * / # Define list_head (name, type) / struct name {/ struct type * lh_first; / * first element * / / /}
#define list_head_initializer (head) / {null}
#DEFINE LIST_ENTRY (TYPE) / STRUCT {/ Struct Type * le_next; / * Next Element * / / / / / / / / / / / / / / / * address of previous next element * / /}
/ * List functions. * /
#define list_empty ((head) -> lh_first == NULL)
#define List_First (Head) ((Head) -> LH_FIRST)
#define List_Foreach (VAR, Head, Field) / for ((VAR) = List_First ((head)); / (var); / (var) = list_next (var), field))
#define list_init (Head) Do {/ list_first ((head) = null; /} while (0)
#define list_insert_after (Listelm, Elm, Field) Do {/ IF ((List_Next (ELM), Field) = list_next ((listelm), Field))! = NULL) / LIST_NEXT ((Listelm), Field) -> Field .le_prev = / & list_next (eLM), Field); / List_Next (Listelm), Field) = (ELM); / (ELM) -> Field.le_prev = & list_next (listelm), Field); /} While 0)
#define list_insert_before (listelm, ELM, Field) DO {/ (ELM) -> Field.le_prev = (listelm) -> Field.le_prev; / list_next (elm), Field) = (listelm); / * (listelm) -> Field.le_prev = (ELM); / (listelm) -> Field.le_prev = & list_next (ELM), Field); /} While (0)
#define list_insert_head (Head, Elm, Field) Do {/ IF ((List_Next (ELM), Field) = List_First ((HEAD))))! = NULL) / List_First ((head)) -> Field.le_prev = & list_next_next_next ((ELM), Field); / list_first ((hEAD)) = (ELM); / (ELM) -> Field.le_prev = & list_first ((head)); /} While (0)
#define list_next (ELM, FIELD) ((ELM) -> Field.le_Next) #define list_remove (ELM, Field) Do {/ if (List_Next (ELM), Field)! = NULL) / LIST_NEXT ((ELM), Field) -> Field.le_prev = / (ELM) -> Field.le_prev; / * (ELM) -> Field.le_prev = List_Next ((ELM), Field); /} While (0)