typedef struct gp_list_head { struct gp_list_head *next; } gp_list_head; typedef struct gp_dlist_head { struct gp_dlist_head *next; struct gp_dlist_head *prev; } gp_dlist_head; typedef struct gp_list { gp_list_head *head; gp_list_head *tail; size_t cnt; } gp_list; typedef struct gp_dlist { gp_dlist_head *head; gp_dlist_head *tail; size_t cnt; } gp_dlist; /* Structure to be used with a single linked list */ struct user_struct { ... gp_list_head lh; ... };