ngx_rbtree_t赤黒ツリー
赤黒ツリーの特徴
<code><span>typedef</span> ngx_uint_t ngx_rbtree_key_t; <span>typedef</span><span>struct</span> ngx_rbtree_node_s ngx_rbtree_node_t; <span>struct</span><span>struct</span> ngx_rbtree_node_s { <span>//无符号整型关键字</span> ngx_rbtree_key_t key; <span>//左子节点</span> ngx_rbtree_node_t *left; <span>//右子节点</span> ngx_rbtree_node_t *right; <span>//父节点</span> ngx_rbtree_node_t *parent; <span>//节点的颜色,0:黑,1:红</span> u_char color; <span>//仅一字节的数据</span> u_char data; };</code>
<code><span>typedef</span><span>struct</span> { ngx_rbtree_node_t node; ngx_uint_t num; }TestRBTreeBode;</code>ログイン後にコピー赤黒ツリーノードによって提供される関数
ngx_rbt_red(no) de) | ||
---|---|---|
ngx_rbt_black(node) | node は ngx_rbtree_nod e_t 型のノードポインタです | |
ngx_rbt_is_red (ノード) | ノードはngx _rbtree_node_tタイプのノードですpointer | |
ngx_rbt_is_black(node) | nodeがngx_rbtree_node_t型のノードポインタである | |
ngx_rbt_copy_color(n1, n2) | n1、n2同上 | |
ngx_rbtree_node_t *ngx_rbtree_min(node,sentinel) | nodeとsentinelはどちらもngx_rbtree_node_t *type | |
ngx_rbtree_s fully_init(node) | ノードは上と同じ | |
赤黒ツリー構造 |
ngx_rbtree_init(tree,s,i) | ||
---|---|---|
void ngx_rbtree_insert(ngx_rbtree_t *tree,ngx_rbtree_node_t *no de) | treeは上記と同じです; ノードは追加されたノードポインタです | |
void ngx_rbtree_delete(ngx_rbtree_t *tree,ngx_rbtree_node_t *node) | treeは上記と同じです;ノードは削除する必要があるノードポインタです | |
著作権に関する声明: 痛みはあなたの心の中にあるだけです。 |