17 struct node *llink, *rlink;
25 int (*compar)(
const void *,
const void *))
33 while (*rootp !=
NULL) {
36 if ((r = (*compar)(vkey, (*rootp)->key)) == 0)
44 q = malloc(
sizeof(
node_t));
48 q->llink = q->rlink =
NULL;
58 int (*compar)(
const void *,
const void *))
65 while (*rootp !=
NULL) {
68 if ((r = (*compar)(vkey, (*rootp)->key)) == 0)
86 tdelete(
const void * __restrict vkey,
void ** __restrict vrootp,
87 int (*compar)(
const void *,
const void *))
93 if (rootp ==
NULL || (p = *rootp) ==
NULL)
96 while ((cmp = (*compar)(vkey, (*rootp)->key)) != 0) {
105 if ((q = (*rootp)->llink) ==
NULL)
107 else if (r !=
NULL) {
108 if (r->llink ==
NULL) {
112 for (q = r->llink; q->llink !=
NULL; q = r->llink)
115 q->llink = (*rootp)->llink;
116 q->rlink = (*rootp)->rlink;
void * tdelete(const void *__restrict vkey, void **__restrict vrootp, int(*compar)(const void *, const void *))
void * tfind(const void *vkey, void *const *vrootp, int(*compar)(const void *, const void *))
void * tsearch(const void *vkey, void **vrootp, int(*compar)(const void *, const void *))