家谱管理系统
——
C
语言(数据结构)
目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间
的层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结
构的知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树
相关的一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员
祖先、子孙、兄弟、堂兄弟的查找。
排答疑和辅导。
完整代码:
#include
#include
#include
intMATEFLAG=0;//
是否入赘或嫁入这家的,
1
表示为是,
0
表示否
typedefstructTreeNode//
树节点定义
{
intNum;//
保存此人儿女个数
charName[20];//
保存此人姓名
charKind;//
保存此人性别,男
M
,女
F
structTreeNode*NextNode[20];//
保存此人的儿女
,NextNode[0]
里存放配偶的地址
structTreeNode*Parent;//
保存此节点的父节点
}TreeNode;
voidCreatTree(TreeNode*Tree);//
创建树
voidOutPutAll(TreeNode*Tree);//
输出树
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);//
添加新成员界面
}
//
显示添加家庭信息的界面