C语言数据结构基于树的家谱管理系统代码
时间: 2023-07-11 15:30:04 浏览: 178
好的,以下是一个基于树的家谱管理系统的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
typedef struct _TreeNode {
char name[MAX_NAME_LEN];
struct _TreeNode *father;
struct _TreeNode *mother;
} TreeNode;
TreeNode *create_tree_node(char *name) {
TreeNode *node = (TreeNode *) malloc(sizeof(TreeNode));
strncpy(node->name, name, MAX_NAME_LEN);
node->father = NULL;
node->mother = NULL;
return node;
}
void add_child(TreeNode *parent, TreeNode *child) {
if (parent->father == NULL) {
parent->father = child;
} else {
parent->mother = child;
}
}
void print_tree(TreeNode *root, int depth) {
if (root == NULL) {
return;
}
for (int i = 0; i < depth; i++) {
printf(" ");
}
printf("%s\n", root->name);
print_tree(root->father, depth + 1);
print_tree(root->mother, depth + 1);
}
int main() {
TreeNode *root = create_tree_node("Tom");
TreeNode *p1 = create_tree_node("John");
TreeNode *p2 = create_tree_node("Mary");
TreeNode *c1 = create_tree_node("Bob");
TreeNode *c2 = create_tree_node("Alice");
TreeNode *c3 = create_tree_node("Charlie");
add_child(root, p1);
add_child(root, p2);
add_child(p1, c1);
add_child(p1, c2);
add_child(p2, c3);
print_tree(root, 0);
return 0;
}
```
在上面的代码中,我们定义了一个 `TreeNode` 结构体表示家族成员节点,其中包含了姓名、父亲节点和母亲节点三个属性。我们还定义了 `create_tree_node` 函数来创建一个新节点,以及 `add_child` 函数来添加一个子节点。
在 `main` 函数中,我们创建了一个根节点 `root`,以及其它一些家族成员节点,并通过 `add_child` 函数将它们连接起来形成一棵家谱树。最后,我们调用 `print_tree` 函数来打印整棵家谱树。
当然,这只是一个简单的示例,实际上的家谱管理系统可能还需要添加更多的功能,例如查询某个家族成员的信息、删除某个家族成员等。
阅读全文