1 2#ifndef _LINKLIST_H_ 3#define _LINKLIST_H_ 4 5struct linklist_node 6{ 7 struct linklist_node *prev; 8 struct linklist_node *next; 9 10 void *data; 11}; 12 13struct linklist 14{ 15 int count; 16 struct linklist_node *head; 17 struct linklist_node *tail; 18 19 int (*cmp) (void *, void *); 20}; 21 22void *linklist_lookup (void *data, struct linklist *linklist); 23int linklist_add (void *data, struct linklist *linklist); 24int linklist_remove (void *data, struct linklist *linklist); 25void linklist_remove_all (struct linklist *linklist); 26 27void linklist_head (struct linklist *linklist, struct linklist_node *node); 28int linklist_end (struct linklist_node *node); 29void linklist_next (struct linklist_node *node); 30 31struct linklist *linklist_create (); 32void linklist_delete (struct linklist *); 33 34#endif /*_LINKLIST_H_*/ 35 36