tfind.c 298 B

1234567891011121314151617181920
  1. #include <search.h>
  2. #include "tsearch.h"
  3. void *tfind(const void *key, void *const *rootp,
  4. int(*cmp)(const void *, const void *))
  5. {
  6. if (!rootp)
  7. return 0;
  8. struct node *n = *rootp;
  9. for (;;) {
  10. if (!n)
  11. break;
  12. int c = cmp(key, n->key);
  13. if (!c)
  14. break;
  15. n = n->a[c>0];
  16. }
  17. return n;
  18. }