linux 数据结构函数
今天翻 man page, 发现 linux 下的 libc 比标准库要丰富很多, 除了提供了一些系统相关的包装函数 (fdopen popen dprintf 之类) 来降低编程难度以外, 还提供了一组数据结构相关的函数. 粗略看了一下, 提供了以下数据结构:
还提供了简单的线性查找算法.
哈希表:
1 2 3 4 5 6 7 8 9
| #include <search.h> int hcreate(size_t); void hdestroy(void); ENTRY *hsearch(ENTRY, ACTION); #define _GNU_SOURCE int hcreate_r(size_t nel, struct hsearch_data *htab); int hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab); void hdestroy_r(struct hsearch_data *htab);
|
队列:
1 2 3
| #include <search.h> void insque(void *, void *); void remque(void *);
|
线性查找:
1 2 3 4 5
| #include <search.h> void *lfind(const void *, const void *, size_t *, size_t, int (*)(const void *, const void *)); void *lsearch(const void *, void *, size_t *, size_t, int (*)(const void *, const void *));
|
查找树:
1 2 3 4 5 6 7 8 9 10 11
| #include <search.h> void *tdelete(const void *restrict, void **restrict, int(*)(const void *, const void *)); void *tfind(const void *, void *const *, int(*)(const void *, const void *)); void *tsearch(const void *, void **, int(*)(const void *, const void *)); void twalk(const void *, void (*)(const void *, VISIT, int )); #define _GNU_SOURCE void tdestroy(void *root, void (*free_node)(void *nodep));
|