admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:git从远程获取代码库)

家谱管理系统——©语言(数据结构)

目的和要求:树形结构是一种非常重要的非线性结构,它用于描述数据元素之间的

层次关系,人类家谱是树形结构的典型体现,通过此项训练让学生掌握树形结构的

知识;使学生重点掌握树与二叉树的转换,二叉树的存储和遍历,和二叉树相关的

一些运算;要求完成家谱信息的录入和保存,任意成员的查找及某一成员祖先、子

孙、兄弟、堂兄弟的查找。

排答疑和辅导。

完整代码:

#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

*升

66);//

输出树

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;

intnum;

charname[20];

TreeNode*NewNode;

getchar();

while(1){system("cls");

printf

("请选择你的操作%");

printf("A:

添加某个人的子女的信息

n");

printf("B:

添加某个人配偶的信息

n");

printf("C:

退出

n");

printf

("请选择相应功能:

n");

c=getchar();switch(c){

case'A':

//添加子女信息

printf

("请输入那个人的名字:

3");

scanf("%s",name);

Tree

SearchTree(Tree,name,20);//

在家谱里查找这个人

if(Tree==NULL){

printf

("该家谱图中没有

%s

这个人的信息请确认是否输入错误

n",name);break;

}

if(Tree->Parent==NULL&&Tree->NextNode[0]==NULL||Tree->Parent!=NULL

&&Tree->Name!=Tree->Parent->NextNode[0]->Name)

{


本文标签: 信息 家谱 保存 结构 树形