|
XWOS API
4.0
XWOS C/C++ API参考手册
|
XWOS通用库:红黑树 更多...
#include <xwos/standard.h>

结构体 | |
| struct | xwlib_rbtree_node |
| 红黑树节点 更多... | |
| struct | xwlib_rbtree |
| 红黑树 更多... | |
宏定义 | |
| #define | xwlib_rbtree_get_link(lpc) ((struct xwlib_rbtree_node **)(((xwptr_t)(lpc)) & (~((xwptr_t)3UL)))) |
| 获取lpc信息中的link指针 | |
| #define | xwlib_rbtree_get_lnpos(lpc) ((xwptr_t)(lpc) & (~((xwptr_t)2UL))) |
| 获取lpc信息中的link指针和位置信息(屏蔽颜色信息) | |
| #define | xwlib_rbtree_get_pos(lpc) ((xwptr_t)(((xwptr_t)(lpc)) & (xwptr_t)1UL)) |
| 获取lpc信息中的位置信息 | |
| #define | xwlib_rbtree_tst_right(lpc) (!!xwlib_rbtree_get_pos(lpc)) |
| 测试当前lpc中的位置信息是否为右侧 | |
| #define | xwlib_rbtree_tst_left(lpc) (!xwlib_rbtree_tst_right(lpc)) |
| 测试当前lpc中的位置信息是否为左侧 | |
| #define | xwlib_rbtree_gen_lc(n, color) ((xwptr_t)(&((n)->left)) | (xwptr_t)(color)) |
| 生成节点左边的链指针、位置和颜色信息 | |
| #define | xwlib_rbtree_gen_rc(n, color) ((xwptr_t)(&((n)->right)) | (xwptr_t)(color) | (xwptr_t)XWLIB_RBTREE_POS_RIGHT) |
| 生成节点右边的链指针、位置和颜色信息 | |
| #define | xwlib_rbtree_gen_lr(n) xwlib_rbtree_gen_lc((n), XWLIB_RBTREE_COLOR_RED) |
| 生成节点左边的链指针、位置和红色信息 | |
| #define | xwlib_rbtree_gen_lb(n) xwlib_rbtree_gen_lc((n), XWLIB_RBTREE_COLOR_BLACK) |
| 生成节点左边的链指针、位置和红色信息 | |
| #define | xwlib_rbtree_gen_rr(n) xwlib_rbtree_gen_rc((n), XWLIB_RBTREE_COLOR_RED) |
| 生成节点右边的链指针、位置和红色信息 | |
| #define | xwlib_rbtree_gen_rb(n) xwlib_rbtree_gen_rc((n), XWLIB_RBTREE_COLOR_BLACK) |
| 生成节点右边的链指针、位置和红色信息 | |
| #define | xwlib_rbtree_get_color(lpc) (((xwptr_t)(lpc)) & (xwptr_t)2UL) |
| 获取lpc信息中的颜色信息 | |
| #define | xwlib_rbtree_tst_black(lpc) (!!xwlib_rbtree_get_color(lpc)) |
| 测试当前lpc中的颜色信息是否为黑色 | |
| #define | xwlib_rbtree_tst_red(lpc) (!xwlib_rbtree_get_color(lpc)) |
| 测试当前lpc中的颜色信息是否为红色 | |
| #define | xwlib_rbtree_entry(ptr, type, member) xwcc_derof((ptr), type, member) |
| 从红黑树节点指针值计算出包含该节点成员的外层结构体的指针值 | |
枚举 | |
| enum | xwlib_rbtree_pos_em { XWLIB_RBTREE_POS_LEFT = 0 , XWLIB_RBTREE_POS_RIGHT = 1 } |
| 红黑树节点位置枚举 更多... | |
| enum | xwlib_rbtree_color_em { XWLIB_RBTREE_COLOR_RED = 0 , XWLIB_RBTREE_COLOR_BLACK = 2 } |
| 红黑树节点颜色枚举 更多... | |
函数 | |
| static void | xwlib_rbtree_init (struct xwlib_rbtree *rbt) |
| 初始化红黑树 | |
| static void | xwlib_rbtree_init_node (struct xwlib_rbtree_node *rbn) |
| 初始化红黑树节点 | |
| static struct xwlib_rbtree_node * | xwlib_rbtree_get_parent (struct xwlib_rbtree_node *node) |
| 返回节点的父节点指针 | |
| static struct xwlib_rbtree_node * | xwlib_rbtree_get_parent_from_lpc (xwptr_t lpc) |
| 从lpc信息返回父节点指针 | |
| static bool | xwlib_rbtree_tst_root (struct xwlib_rbtree *rbt, struct xwlib_rbtree_node *node) |
| 测试当前节点是否为根节点 | |
| static bool | xwlib_rbtree_tst_link_root (struct xwlib_rbtree *rbt, struct xwlib_rbtree_node **link) |
| 测试是否连接到根节点(是否为根节点的子节点) | |
| static void | xwlib_rbtree_flip_color (struct xwlib_rbtree_node *node) |
| 反转节点的颜色 | |
| static void | xwlib_rbtree_set_black (struct xwlib_rbtree_node *node) |
| 将节点设置为黑色 | |
| static void | xwlib_rbtree_set_red (struct xwlib_rbtree_node *node) |
| 将节点设置为红色 | |
| static void | xwlib_rbtree_link (struct xwlib_rbtree_node *node, xwptr_t lpc) |
| 链接节点,并设置位置及颜色信息 | |
| static void | xwlib_rbtree_link_nil (struct xwlib_rbtree_node **link) |
| 链接空(叶子)节点 | |
| static struct xwlib_rbtree_node * | xwlib_rbtree_get_predecessor (struct xwlib_rbtree_node *node) |
| 返回节点的前趋节点 | |
| static struct xwlib_rbtree_node * | xwlib_rbtree_get_successor (struct xwlib_rbtree_node *node) |
| 返回节点的后继节点 | |
| static void | xwlib_rbtree_transplant (struct xwlib_rbtree_node *newn, struct xwlib_rbtree_node *oldn) |
| 用新节点代替旧节点并继承它的链指针、颜色和位置信息, 但新节点并不接管旧节点的子节点 | |
| static void | xwlib_rbtree_transplant_nil (struct xwlib_rbtree_node *oldn) |
| 用叶子(NIL)替换一个旧节点 | |
| static bool | xwlib_rbtree_tst_empty (struct xwlib_rbtree *t) |
| 测试一棵红黑树是否为空树 | |
| static bool | xwlib_rbtree_tst_node_unlinked (struct xwlib_rbtree_node *n) |
| 测试红黑树节点是否已经链接到红黑树中 | |
| void | xwlib_rbtree_insert_color (struct xwlib_rbtree *tree, struct xwlib_rbtree_node *node) |
| 插入一个红色节点后修正红黑树的颜色 | |
| void | xwlib_rbtree_remove (struct xwlib_rbtree *tree, struct xwlib_rbtree_node *node) |
| 删除一个节点,并修正红黑树的颜色 | |
| void | xwlib_rbtree_replace (struct xwlib_rbtree_node *newn, struct xwlib_rbtree_node *oldn) |
| 用一个新节点代替旧节点,继承它的颜色、位置信息并接管它的子树 | |
XWOS通用库:红黑树
This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
在文件 rbtree.h 中定义.