00001
00002
00003
00004
00005
00006 typedef struct dllist_node_t {
00007 struct dllist_node_t *next, *prev;
00008 void *data;
00009 } dllist_node;
00010
00011
00012
00013
00014 typedef struct dllist_t {
00015 struct dllist_node_t *head, *tail;
00016 unsigned int size;
00017 } dllist;
00018
00019
00020 dllist *dllist_create_list();
00021 dllist_node *dllist_create_node(void *data);
00022
00023
00024
00025 int dllist_destroy_list(dllist *ddlist);
00026 void *dllist_destroy_node(dllist_node *node);
00027
00028
00029 void dllist_insert_after(dllist *dllist, dllist_node *node, dllist_node *newnode);
00030 void dllist_insert_before(dllist *dllist, dllist_node *node, dllist_node *newnode);
00031 void dllist_insert_beginning(dllist *dllist, dllist_node *newnode);
00032 void dllist_insert_end(dllist *dllist, dllist_node *newnode);
00033
00034
00035 void *dllist_remove(dllist *dllist, dllist_node *node);
00036 void *dllist_remove_node_at_pos(dllist *dllist, int pos);
00037
00038
00039 dllist_node *dllist_head(dllist *dllist);
00040 dllist_node *dllist_tail(dllist *dllist);
00041 dllist_node *dllist_next(dllist_node *node);
00042 dllist_node *dllist_prev(dllist_node *node);
00043
00044 void *dllist_data(dllist_node *node);
00045 int dllist_size(dllist *dllist);
00046 void *dllist_get_node(dllist *dllist, int pos);