如何正确初始化C中的红黑树?
结构:
typedef struct Node{
int key;
struct Node *left;
struct Node *right;
struct Node *parent;
enum {RED, BLACK} color;
}node;
typedef struct RBtree{
struct Node *root;
struct Node *nil;
}rbtree;
主要功能:
int main(){
rbtree *tree;
init_rbtree(&tree);
}
初始化功能:
void init_rbtree(rbtree **t){
(*t)->root = NULL;
node *n = (node*)malloc(sizeof(node));
if(n != NULL){
n->color = BLACK;
(*t)->nil = n;
}
}
运行此代码后程序崩溃。
答案 0 :(得分:1)
您需要先为*t
分配内存,然后才能使用它。
void init_rbtree(rbtree **t) {
*t=malloc(sizeof(rbtree));
if (*t==NULL) {
//handle error
}
else {
(*t)->root = NULL;
node *n = malloc(sizeof(node));
if(n != NULL){
n->color = BLACK;
(*t)->nil = n;
}
}
}