#include <cdcontainers/data-info.h>
#include <stddef.h>
Go to the source code of this file.
◆ CDC_MAKE_FIND_NODE_FN
#define CDC_MAKE_FIND_NODE_FN |
( |
|
T | ) |
|
Value: { \
while (node != NULL &&
cdc_not_eq(cmp, node->key, key)) { \
if (cmp(key, node->key)) { \
node = node->left; \
} else { \
node = node->right; \
} \
} \
return node; \
}
static int cdc_not_eq(int(*pred)(const void *, const void *), const void *l, const void *r)
Definition: data-info.h:42
int(* cdc_binary_pred_fn_t)(const void *, const void *)
Definition: common.h:57
◆ CDC_MAKE_MIN_NODE_FN
#define CDC_MAKE_MIN_NODE_FN |
( |
|
T | ) |
|
Value:static T cdc_min_tree_node(T node) \
{ \
if (node == NULL) { \
return NULL; \
} \
while (node->left != NULL) { \
node = node->left; \
} \
return node; \
}
◆ CDC_MAKE_MAX_NODE_FN
#define CDC_MAKE_MAX_NODE_FN |
( |
|
T | ) |
|
Value:static T cdc_max_tree_node(T node) \
{ \
if (node == NULL) { \
return NULL; \
} \
while (node->right != NULL) { \
node = node->right; \
} \
return node; \
}
◆ CDC_MAKE_SUCCESSOR_FN
#define CDC_MAKE_SUCCESSOR_FN |
( |
|
T | ) |
|
Value:static T cdc_tree_successor(T node) \
{ \
if (node->right) { \
return cdc_min_tree_node(node->right); \
} \
T p = node->parent; \
while (p && node == p->right) { \
node = p; \
p = p->parent; \
} \
return p; \
}
◆ CDC_MAKE_PREDECESSOR_FN
#define CDC_MAKE_PREDECESSOR_FN |
( |
|
T | ) |
|
Value:static T cdc_tree_predecessor(T node) \
{ \
if (node->left) { \
return cdc_max_tree_node(node->left); \
} \
T p = node->parent; \
while (p && node == p->left) { \
node = p; \
p = p->parent; \
} \
return p; \
}
◆ CDC_MAKE_TREE_HEIGTH_FN
#define CDC_MAKE_TREE_HEIGTH_FN |
( |
|
T | ) |
|
Value:static size_t cdc_tree_height(T node) \
{ \
if (node == NULL) { \
return 0; \
} \
size_t lh = cdc_tree_height(node->left); \
size_t rh = cdc_tree_height(node->right); \
}
#define CDC_MAX(a, b)
Definition: common.h:32