| #include <search.h> | |
| struct node { | |
| struct node *next; | |
| struct node *prev; | |
| }; | |
| void insque(void *element, void *pred) | |
| { | |
| struct node *e = element; | |
| struct node *p = pred; | |
| if (!p) { | |
| e->next = e->prev = 0; | |
| return; | |
| } | |
| e->next = p->next; | |
| e->prev = p; | |
| p->next = e; | |
| if (e->next) | |
| e->next->prev = e; | |
| } | |
| void remque(void *element) | |
| { | |
| struct node *e = element; | |
| if (e->next) | |
| e->next->prev = e->prev; | |
| if (e->prev) | |
| e->prev->next = e->next; | |
| } |