- #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;
- }
|