【发布时间】:2019-11-25 10:02:05
【问题描述】:
多年来我不使用 C 语言,现在我又需要它了。 我正在尝试构建一棵红黑树,但我一开始就卡住了,因为我错过了一些关于“结构”的东西。
请看一下我的“结构”声明,它们很简单。 这是 Red_black_tree.c 中包含的头文件
#define BLACK 0 //defalut color
#define RED 1 //
struct Node { //create a black node by default, to have a red one look at "create_red_node"
struct Node *left = NULL;
struct Node *right= NULL;
int key = 0;
int value = 0;
char color = BLACK;
};
struct Root_t {
struct Node* Root;
};
struct Node* create_node () {
struct Node* black = (Node*) malloc (sizeof(Node));
return black;
}
struct Node* create_red_node () {
struct Node* red = create_node ();
red->color=RED;
return red;
}
Root_t* create_tree () {
struct Root_t* fake=(Root_t*) malloc (sizeof(Root_t));
struct fake->Root->left=create_red_node ();
struct fake->Root->right=create_red_node ();
return fake;
}
我用“gcc Red_black_tree.c -o RBTree”编译。 GCC 说类似:“预期的';'在声明列表末尾”7 次,或“必须使用 'struct' 标签来引用类型...”、“预期标识符...”。 你怎么看,创建RBTree好不好?
【问题讨论】:
-
struct Node *left = NULL;这不是struct成员声明的有效 C 代码。清洗,冲洗,重复此代码中所有类似的事件。您的结束问题与该错误无关;只要您首先精通该语言,就可以用您喜欢的任何语言实现 RB 树。 -
建议你在函数
create_node中设置默认值
标签: c struct binary-search-tree red-black-tree