intNum;//保存此人儿女个数charName[20];//保存此人姓名chaKind;//保存此人性别,男 M,女 FNextNode[20];//保存此人的儿女,NextNode[0]Parent;//保存此节点的父节点家谱管理系统——C 语言(数据结构)目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员祖先、子孙、兄弟、堂兄弟的查找。排答疑和辅导。完整代码:#include#include#includeintMATEFLAG=0;//是否入赘或嫁入这家的,1 表示为是,0 表示否TreeNode//树节点定义TreeNode*SearchTree(TreeNode*Tree,charname[],intlength);voidMainMenu(TreeNode*Tree);voidSubMenue1(TreeNode*Tree);voidSubMenue2(TreeNode*Tree);voidChange(TreeNode*Tree);voidAddNew(TreeNode*Tree);voidOutPutMessage(TreeNode*Tree,charname[],intlength);//主函数voidmain(){TreeNode*Tree;//产生根节点Tree=(TreeNode*)malloc(sizeof(TreeNode));Tree->Parent=NULL;strcpy(Tree->Name,"0");MainMenu(Tree);//显示主菜单}//添加新的成员voidAddNew(TreeNode*Tree){SubMenue2(Tree);//添加新成员界面}//显示添加家庭信息的界面voidSubMenue2(TreeNode*Tree){charc;**structTreeNodestructTreeNode}TreeNode;voidCreatTree(TreeNode*Tree);//创建树voidOutPutAII(TreeNode*Tree);//输出树typedefstruct{intnum;charname[20];TreeNode*NewNode;getchar();while(1){system("cls");printf("请选择你的操作\n");printf("A:添加某个人的子女的信息\n");printf("B:添加某个人配偶的信息\n");printf("C:退出\n");printf("请选择相应功能:\n");c=getchar();switch(c){case'A'://添加子女信息printf("请输入那个人的名字:\n");scanf("%s",name);Tree 二 SearchTree(Tree,name,20);//在家谱里查找这个人if(Tree==NULL){printf("该家谱图中没有%$这个人的信息请确认是否输入错误\n",name);break;}if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL&&Tree->Name!=Tree->Parent->NextNode[0]->Name){printf("至今还没有配偶请先添加配偶\n",Tree->Name);break;}if(Tree->Parent==NULL&&(Tree->Num>20||Tree->N...