将结构体的指针实现与业务分离
#define KEY_VALUE int
#define BSTREE_ENTRY(name, type) \
struct name{ \
struct type *left; \
struct type *right; \
}
struct bstree_node{
KEY_VALUE data;
BSTREE_ENTRY(,bstree_node) bst;
};
typedef struct _rbtree {
bstree_node *root;
bstree_node *nil;
} btree;
一般的写法
typedef int KEY_TYPE;
typedef struct _rbtree_node {
struct _rbtree_node *right;
struct _rbtree_node *left;
KEY_TYPE key;
} rbtree_node;
typedef struct _rbtree {
rbtree_node *root;
rbtree_node *nil;
} rbtree;