数据结构用c语言写家族族谱管理系统的代码
时间: 2024-12-14 15:21:01 浏览: 18
在C语言中,编写一个简单的家族族谱管理系统通常会涉及树形数据结构,因为家族关系可以被建模成一个树状结构。这里我们展示一个基本的递归结构体和函数的例子,用于存储家庭成员和他们的关系。
首先,定义一个`FamilyMember`结构体,包含姓名、性别和子女数组:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char name[50];
char gender;
FamilyMember* children[5]; // 子女最多有5个,可以根据实际需要调整
} FamilyMember;
FamilyMember* createMember(char* name, char gender) {
FamilyMember* member = (FamilyMember*)malloc(sizeof(FamilyMember));
if (member != NULL) {
strcpy(member->name, name);
member->gender = gender;
for (int i = 0; i < 5; i++) {
member->children[i] = NULL;
}
}
return member;
}
```
接着,你可以创建一些基础的家庭成员并关联起来,形成树结构:
```c
FamilyMember* father = createMember("爸爸", 'M');
FamilyMember* mother = createMember("妈妈", 'F');
// 添加孩子到父母节点
father->children[0] = mother;
mother->children[1] = createMember("儿子", 'M'); // 简化假设只有一个孩子
mother->children[2] = createMember("女儿", 'F'); // 另一个孩子
// 打印家族成员
void printFamilyTree(FamilyMember* node, int depth) {
for (int i = 0; i < depth; i++) printf(" ");
printf("%s (%c)\n", node->name, node->gender);
for (int i = 0; i < 5; i++) {
if (node->children[i]) printFamilyTree(node->children[i], depth + 1);
}
}
int main() {
printFamilyTree(father, 0); // 调用打印函数
return 0;
}
```
这个例子非常基础,实际应用中可能需要添加更多的功能,如查找特定成员、添加新的家庭成员等。注意,C语言本身并不支持自动垃圾回收,所以在使用完`FamilyMember`结构体后,记得手动释放内存以避免内存泄漏。
阅读全文