[关闭]
@zwh8800 2017-08-23T02:05:53.000000Z 字数 1040 阅读 190179

linux 数据结构函数

blog 归档 linux 内核 kernel


linux 数据结构函数


今天翻 man page, 发现 linux 下的 libc 比标准库要丰富很多, 除了提供了一些系统相关的包装函数 (fdopen popen dprintf 之类) 来降低编程难度以外, 还提供了一组数据结构相关的函数. 粗略看了一下, 提供了以下数据结构:

还提供了简单的线性查找算法.
哈希表:

  1. #include <search.h>
  2. int hcreate(size_t);
  3. void hdestroy(void);
  4. ENTRY *hsearch(ENTRY, ACTION);
  5. #define _GNU_SOURCE
  6. int hcreate_r(size_t nel, struct hsearch_data *htab);
  7. int hsearch_r(ENTRY item, ACTION action, ENTRY **retval,
  8. struct hsearch_data *htab);
  9. void hdestroy_r(struct hsearch_data *htab);

队列:

  1. #include <search.h>
  2. void insque(void *, void *);
  3. void remque(void *);

线性查找:

  1. #include <search.h>
  2. void *lfind(const void *, const void *, size_t *,
  3. size_t, int (*)(const void *, const void *));
  4. void *lsearch(const void *, void *, size_t *,
  5. size_t, int (*)(const void *, const void *));

查找树:

  1. #include <search.h>
  2. void *tdelete(const void *restrict, void **restrict,
  3. int(*)(const void *, const void *));
  4. void *tfind(const void *, void *const *,
  5. int(*)(const void *, const void *));
  6. void *tsearch(const void *, void **,
  7. int(*)(const void *, const void *));
  8. void twalk(const void *,
  9. void (*)(const void *, VISIT, int ));
  10. #define _GNU_SOURCE
  11. void tdestroy(void *root, void (*free_node)(void *nodep));
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注