利用C语言二叉树写家谱管理系统
时间: 2023-12-26 08:27:20 浏览: 162
很高兴为您解答。下面是一个使用C语言编写的简单家谱管理系统的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构
typedef struct Node {
char name[20];
struct Node* left;
struct Node* right;
} Node;
// 创建新节点
Node* createNode(char name[]) {
Node* newNode = (Node*)malloc(sizeof(Node));
strcpy(newNode->name, name);
newNode->left = NULL;
newNode->right = NULL;
return newNode;}
// 插入子节点
void insertChild(Node* root, char parentName[], char childName[]) {
if (root == NULL) {
return;
}
if (strcmp(root->name, parentName) == 0) {
if (root->left == NULL) {
root->left = createNode(childName);
} else if (root->right == NULL) {
root->right = createNode(childName);
} else {
printf("该节点已经有两个子节点了。\n");
}
} else {
insertChild(root->left, parentName, childName);
insertChild(root->right, parentName, childName);
}
}
// 遍历打印家谱
void printFamilyTree(Node* root) {
if (root == NULL) {
return;
}
printf("%s\n", root->name);
printFamilyTree(root->left);
printFamilyTree(root->right);
}
int main() {
// 创建家谱树
Node* root = createNode("曾祖父");
insertChild(root, "曾祖父", "祖父");
insertChild(root, "曾祖父", "曾祖母");
insertChild(root, "祖父", "父亲");
insertChild(root, "祖父", "叔叔");
insertChild(root, "祖父", "姑姑");
insertChild(root, "父亲", "我");
insertChild(root, "父亲", "兄弟");
// 打印家谱
printf("家谱树:\n");
printFamilyTree(root);
return 0;
}
```
这个示例中,我们使用了二叉树的数据结构来表示家谱。每个节点包含一个名字和两个指针,分别指向左子节点和右子节点。通过插入子节点的操作,我们可以构建一个完整的家谱树。最后,通过遍历打印家谱树,我们可以将家谱信息输出到屏幕上。
阅读全文