acl  3.5.3.0
acl_btree.h
浏览该文件的文档.
1 #ifndef ACL_BTREE_INCLUDE_H
2 #define ACL_BTREE_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "acl_define.h"
9 
10 /**
11  * 二叉树结构类型定义
12  */
13 typedef struct ACL_BTREE ACL_BTREE;
14 
15 /**
16  * 创建一个二叉树对象
17  * @return {ACL_BTREE*} 新创建的二叉树对象
18  */
19 ACL_API ACL_BTREE *acl_btree_create(void);
20 
21 /**
22  * 释放一个二叉树对象
23  * @param tree {ACL_BTREE*} 二叉树对象
24  * @return {int} 0: 成功; -1: 失败
25  */
26 ACL_API int acl_btree_destroy(ACL_BTREE *tree);
27 
28 /**
29  * 从二叉树中查询
30  * @param tree {ACL_BTREE*} 二叉树对象
31  * @param key {unsigned int} 查询键
32  * @return {void*} 查询结果
33  */
34 ACL_API void *acl_btree_find(ACL_BTREE *tree, unsigned int key);
35 
36 /**
37  * 向二叉树中添加
38  * @param tree {ACL_BTREE*} 二叉树对象
39  * @param key {unsigned int} 键
40  * @param data {void*} 动态对象
41  */
42 ACL_API int acl_btree_add(ACL_BTREE *tree, unsigned int key, void *data);
43 
44 /**
45  * 从二叉树中删除
46  * @param tree {ACL_BTREE*} 二叉树对象
47  * @param key {unsigned int} 键
48  * @return {void*} 被删除的动态对象地址, 如果不存在则返回NULL
49  */
50 ACL_API void *acl_btree_remove(ACL_BTREE *tree, unsigned int key);
51 
52 /**
53  * 返回二叉树中最小的键
54  * @param tree {ACL_BTREE*} 二叉树对象
55  * @param key {unsigned int*} 键指针,存储结果,不能为空
56  * @return {int} 0: 表示找到最小键; -1: 表示出错或未找到最小键
57  */
58 ACL_API int acl_btree_get_min_key(ACL_BTREE *tree, unsigned int *key);
59 
60 /**
61  * 返回二叉树中最大的键
62  * @param tree {ACL_BTREE*} 二叉树对象
63  * @param key {unsigned int*} 键指针,存储结果,不能为空
64  * @return {int} 0: 表示找到最大键; -1: 表示出错或未找到最大键
65  */
66 ACL_API int acl_btree_get_max_key(ACL_BTREE *tree, unsigned int *key);
67 
68 /**
69  * 由给定键,返回其在二叉树中的下一个邻近键
70  * @param tree {ACL_BTREE*} 二叉树对象
71  * @param cur_key {unsigned int} 当前给定键
72  * @param next_key {unsigned int*} 存储结果键的指针地址
73  * @return {int} 0: 表示找到; -1: 表示出错或未找到
74  */
75 ACL_API int acl_btree_get_next_key(ACL_BTREE *tree,
76  unsigned int cur_key, unsigned int *next_key);
77 
78 /**
79  * 计算当前二叉树的深度
80  * @param tree {ACL_BTREE*} 二叉树对象
81  * @return {int} 二叉树的深度
82  */
83 ACL_API int acl_btree_depth(ACL_BTREE *tree);
84 ACL_API void acl_btree_dump(ACL_BTREE *b);
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif
91 
ACL_API ACL_BTREE * acl_btree_create(void)
ACL_API void * acl_btree_find(ACL_BTREE *tree, unsigned int key)
ACL_API int acl_btree_get_next_key(ACL_BTREE *tree, unsigned int cur_key, unsigned int *next_key)
ACL_API void acl_btree_dump(ACL_BTREE *b)
ACL_API int acl_btree_add(ACL_BTREE *tree, unsigned int key, void *data)
ACL_API void * acl_btree_remove(ACL_BTREE *tree, unsigned int key)
ACL_API int acl_btree_destroy(ACL_BTREE *tree)
struct ACL_BTREE ACL_BTREE
Definition: acl_btree.h:13
ACL_API int acl_btree_get_max_key(ACL_BTREE *tree, unsigned int *key)
ACL_API int acl_btree_depth(ACL_BTREE *tree)
ACL_API int acl_btree_get_min_key(ACL_BTREE *tree, unsigned int *key)