#include <stdio.h>
#include <stdlib.h>
// 定义家谱成员结构
typedef struct FamilyMember {
char name[50];
struct FamilyMember* father;
struct FamilyMember* mother;
struct FamilyMember* child; // 第一个孩子
struct FamilyMember* sibling; // 兄弟节点
} FamilyMember;
// 创建新成员
FamilyMember* createMember(const char* name) {
FamilyMember* member = (FamilyMember*)malloc(sizeof(FamilyMember));
if (member) {
snprintf(member->name, sizeof(member->name), "%s", name);
member->father = NULL;
member->mother = NULL;
member->child = NULL;
member->sibling = NULL;
}
return member;
}
// 添加孩子
void addChild(FamilyMember* parent, FamilyMember* child) {
if (parent->child == NULL) {
parent->child = child;
} else {
FamilyMember* temp = parent->child;
while (temp->sibling != NULL) {
temp = temp->sibling;
}
temp->sibling = child;
}
}
// 打印家谱
void printFamily(FamilyMember* member, int level) {
if (member == NULL) return;
for (int i = 0; i < level; i++) printf(" ");
printf("%s\n", member->name);
printFamily(member->child, level + 1); // 打印孩子
printFamily(member->sibling, level); // 打印兄弟
}
int main() {
// 创建家谱
FamilyMember* grandpa = createMember("Grandpa");
FamilyMember* father = createMember("Father");
FamilyMember* uncle = createMember("Uncle");
FamilyMember* child1 = createMember("Child1");
FamilyMember* child2 = createMember("Child2");
// 建立关系
addChild(grandpa, father);
addChild(grandpa, uncle);
addChild(father, child1);
addChild(father, child2);
// 打印家谱
printFamily(grandpa, 0);
// 释放内存(略)
return 0;
}
|