家庭族谱管理系统c语言树结构
时间: 2023-09-02 10:08:41 浏览: 357
家庭族谱管理系统可以使用树结构来实现,以下是一个简单的C语言实现示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
// 定义家庭成员结构体
typedef struct _family_member {
char name[MAX_NAME_LEN];
struct _family_member *father;
struct _family_member *mother;
struct _family_member *spouse;
struct _family_member *children;
} FamilyMember;
// 创建一个家庭成员
FamilyMember *createMember(char *name) {
FamilyMember *member = (FamilyMember *)malloc(sizeof(FamilyMember));
strcpy(member->name, name);
member->father = NULL;
member->mother = NULL;
member->spouse = NULL;
member->children = NULL;
return member;
}
// 添加父亲
void addFather(FamilyMember *member, FamilyMember *father) {
member->father = father;
}
// 添加母亲
void addMother(FamilyMember *member, FamilyMember *mother) {
member->mother = mother;
}
// 添加配偶
void addSpouse(FamilyMember *member, FamilyMember *spouse) {
member->spouse = spouse;
}
// 添加子女
void addChild(FamilyMember *member, FamilyMember *child) {
FamilyMember *children = member->children;
if (children == NULL) {
member->children = child;
} else {
while (children->children != NULL) {
children = children->children;
}
children->children = child;
}
}
// 打印家庭成员
void printMember(FamilyMember *member) {
printf("name: %s\n", member->name);
if (member->father != NULL) {
printf("father: %s\n", member->father->name);
}
if (member->mother != NULL) {
printf("mother: %s\n", member->mother->name);
}
if (member->spouse != NULL) {
printf("spouse: %s\n", member->spouse->name);
}
if (member->children != NULL) {
printf("children:\n");
FamilyMember *child = member->children;
while (child != NULL) {
printf("%s\n", child->name);
child = child->children;
}
}
}
int main() {
// 创建家庭成员
FamilyMember *grandfather = createMember("grandfather");
FamilyMember *grandmother = createMember("grandmother");
FamilyMember *father = createMember("father");
FamilyMember *mother = createMember("mother");
FamilyMember *son1 = createMember("son1");
FamilyMember *son2 = createMember("son2");
FamilyMember *daughter = createMember("daughter");
// 添加关系
addFather(father, grandfather);
addMother(father, grandmother);
addSpouse(father, mother);
addChild(father, son1);
addChild(father, son2);
addChild(father, daughter);
// 打印家庭成员
printf("grandfather:\n");
printMember(grandfather);
printf("\n");
printf("grandmother:\n");
printMember(grandmother);
printf("\n");
printf("father:\n");
printMember(father);
printf("\n");
printf("mother:\n");
printMember(mother);
printf("\n");
printf("son1:\n");
printMember(son1);
printf("\n");
printf("son2:\n");
printMember(son2);
printf("\n");
printf("daughter:\n");
printMember(daughter);
printf("\n");
return 0;
}
```
在上面的示例中,我们定义了一个家庭成员结构体,包含了成员的姓名、父亲、母亲、配偶和子女等信息。我们可以使用 `createMember` 函数来创建一个新的成员,然后使用 `addFather`、`addMother`、`addSpouse` 和 `addChild` 函数来添加成员之间的关系。最后,我们可以使用 `printMember` 函数来打印成员的信息。
阅读全文
相关推荐















