insque.c raw
1 #include <search.h>
2
3 struct node {
4 struct node *next;
5 struct node *prev;
6 };
7
8 void insque(void *element, void *pred)
9 {
10 struct node *e = element;
11 struct node *p = pred;
12
13 if (!p) {
14 e->next = e->prev = 0;
15 return;
16 }
17 e->next = p->next;
18 e->prev = p;
19 p->next = e;
20 if (e->next)
21 e->next->prev = e;
22 }
23
24 void remque(void *element)
25 {
26 struct node *e = element;
27
28 if (e->next)
29 e->next->prev = e->prev;
30 if (e->prev)
31 e->prev->next = e->next;
32 }
33