linux下提供了用二叉树进行搜索的实现。
以下是接口定义:
#include
void *tsearch(const void *key, void **rootp,
int(*compar)(const void *, const void *));
void *tfind(const void *key, const void **rootp,
int(*compar)(const void *, const void *));
//返回树内部的节点指针,tsearch 没找到key就插入节点,tfind没找到key就返回NULL
//对于返回的节点指针pt,*(**pt)就是void *key了,不能直接引用pt
void *tdelete(const void *key, void **rootp,
int(*compar)(const void *, const void *));
void twalk(const void *root, void(*action)(const void *nodep,
const VISIT which,
const int depth));
//depth为当前节点的深度,0 表示为根节点。
#define _GNU_SOURCE
#include
void tdestroy (void *root, void (*free_node)(void *nodep));