search.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef _SEARCH_H
  2. #define _SEARCH_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #define __NEED_size_t
  7. #include <bits/alltypes.h>
  8. typedef enum { FIND, ENTER } ACTION;
  9. typedef enum { preorder, postorder, endorder, leaf } VISIT;
  10. typedef struct {
  11. char *key;
  12. void *data;
  13. } ENTRY;
  14. int hcreate(size_t);
  15. void hdestroy(void);
  16. ENTRY *hsearch(ENTRY, ACTION);
  17. void insque(void *, void *);
  18. void remque(void *);
  19. void *lsearch(const void *, void *, size_t *, size_t,
  20. int (*)(const void *, const void *));
  21. void *lfind(const void *, const void *, size_t *, size_t,
  22. int (*)(const void *, const void *));
  23. void *tdelete(const void *, void **, int(*)(const void *, const void *));
  24. void *tfind(const void *, void *const *, int(*)(const void *, const void *));
  25. void *tsearch(const void *, void **, int (*)(const void *, const void *));
  26. void twalk(const void *, void (*)(const void *, VISIT, int));
  27. #ifdef _GNU_SOURCE
  28. struct qelem {
  29. struct qelem *q_forw, *q_back;
  30. char q_data[1];
  31. };
  32. void tdestroy(void *, void (*)(void *));
  33. #endif
  34. #ifdef __cplusplus
  35. }
  36. #endif
  37. #endif