linux 数据结构函数

归档 linux 内核 kernel

2014-02-09 00:00 AM

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));

发表于 2014-02-09 00:00 AM,最后更新于 2018-11-01 13:54:36 PM。

本文使用 署名 - 非商业性使用 - 相同方式共享 4.0 国际 协议


评论加载中...

首页