c语言家谱树数据结构完整代码
时间: 2023-07-26 07:28:57 浏览: 47
下面是一个完整的C语言家谱树数据结构的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 家族成员结构体
struct member {
char name[20]; // 成员姓名
struct member *parent; // 父节点指针
struct member *child; // 子节点指针
};
// 创建家族成员节点
struct member *create_member(char *name) {
struct member *m = (struct member*) malloc(sizeof(struct member));
strcpy(m->name, name);
m->parent = NULL;
m->child = NULL;
return m;
}
// 添加子节点
void add_child(struct member *parent, struct member *child) {
child->parent = parent;
if (parent->child == NULL) {
parent->child = child;
} else {
struct member *p = parent->child;
while (p->child != NULL) {
p = p->child;
}
p->child = child;
}
}
// 遍历家族树
void traverse(struct member *m) {
if (m == NULL) {
return;
}
printf("%s\n", m->name);
traverse(m->child);
traverse(m->parent);
}
int main() {
// 创建家族成员
struct member *root = create_member("张三");
struct member *m1 = create_member("李四");
struct member *m2 = create_member("王五");
struct member *m3 = create_member("赵六");
struct member *m4 = create_member("孙七");
struct member *m5 = create_member("周八");
// 添加家族成员
add_child(root, m1);
add_child(root, m2);
add_child(m1, m3);
add_child(m1, m4);
add_child(m2, m5);
// 遍历家族树
traverse(root);
return 0;
}
```
在这个代码示例中,我们首先定义了一个结构体`struct member`来表示家族成员,其中包含成员姓名、父节点指针和子节点指针。接着,我们定义了三个函数来完成创建成员节点、添加子节点和遍历家族树的操作。最后,我们在`main`函数中创建了一个家族树,并输出了家族成员的遍历结果。
值得注意的是,这只是一个简单的示例,实际应用中需要根据具体情况设计更加复杂的数据结构和算法来处理更加复杂的家族关系。