- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
家谱的设计与实现(二叉树)
家谱的设计与实现(树,查找)
家谱的设计主要是实现对家庭成员信息的建立、查找、插入、修改、删除等功能。可。基本功能如下:
(1)家谱中每个成员的信息包括:姓名、性别。
(2)家谱祖先数据的录入(树的根结点)。
(3)家庭成员的添加:即添加某人的儿女(包括姓名和性别),儿女的数目由控制台端给出,然后输入相应的儿女姓名和性别(此处所有儿女的 姓名不能重名)。
(4)家庭成员的修改:可以修改某一成员的姓名。
(5)家庭成员的查询:查询某一成员在家族中的辈分(第几代),并能查询此成员的所有子女及这一辈的所有成员。
(6)家庭成员的删除:删除此成员时,若其有后代,将删除其所有后代成员。
#include <stdio.h>
#include <malloc.h>
if(p==NULL)
return NULL;//没有家谱,头指针下为空
if(strcmpi(p->l.name,ch)==0)
return p;//家谱不为空,头指针下有这个人
if(p->brother)
{
q=search(p->brother,ch);//在兄弟中找
if(q)
return q;//找到
}
if(p->child)
{
q=search(p->child,ch);//在孩子中找
if(q!=NULL)
return q;
}
return NULL;//没有找到
}
ft *parent(ft *p,ft *q,int *flag) //通过parent函数得到双亲结点。用flag标志,-1为左孩子,1为右孩子
{
if(p==NULL)
return NULL;//没有家谱,头指针下为空
if(p->child==NULL)
{
flag=0;
return NULL;
}
else
{
if(p->brother==q)
{
*flag=1;
return p;
}
else
{
if(p->child==q)
{
*flag=-1;
return p;
}
else
{
if(p->brother!=NULL)
{
parent(p->brother,q,*&flag);
}
if(p->child!=NULL)
{
parent(p->child,q,*&flag);
}
}
}
}
}
int generation(ft *p,char ch[]) // 获得搜索到的成员的代目的返回值
{
ft *q;
if(p==NULL) return NULL;
if(strcmpi(p->l.name,ch)==0) return p->l.generation;//家谱不为空,头指针下有这个人
if(p->brother)
{
q=search(p->brother,ch);//在兄弟中找
if(q) return q->l.generation;//找到
}
if(p->child)
{
q=search(p->child,ch);//在孩子中找
if(q!=NULL) return q->l.generation;
}
return NULL;
}
void saves(ft *p,char b[],char c,int d)//建立家谱孩子结点 创建结点并对l赋值 保存
{
for(int i=0;i<MAX;i++)
p->l.name[i]=b[i];
p->l.sex=c;
p->l.generation=d;
}
void disp(ft *n) //搜索到数据的输出
{
ft *t=NULL;
printf("此人姓名:%s 性别%c 为第%d代\n",n->l.name,n->l.sex,n->l.generation);
printf("\n");
printf("此人的子女:"); //子女输出
if(n->child==NULL)
{
printf("此人无子女!");
}
else
{
if(n->child->brother==NULL)
{printf("姓名:%s 性别:%c\t",n->child->l.name,n->child->l.sex);}
else
{
printf("姓名:%
您可能关注的文档
- 家谱版式体例.docx
- 家禽常用原粉的使用方法.doc
- 家禽的生物学特性-(1).doc
- 家禽顽固性呼吸道病的配方.doc
- 家禽养殖场租赁合同范本2篇.doc
- 家庭12种素饺子的做法集锦.docx
- 家庭保姆工作职责要求和工作时间表.doc
- 家庭保险规划书.doc
- 家庭保险规划书.方案.doc
- 家庭暴力与青少年犯罪心理的关系研究.doc
- 2023年内蒙古赤峰赤峰市翁牛特旗事业单位招聘30人考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年十堰市某事业单位招考临时工作人员(29名)考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年四川泸州市纳溪区卫生事业单位招聘30人考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年内蒙古通辽市事业单位招考考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年吉林延边州龙井市事业单位招聘142人1号考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年安徽芜湖繁昌区事业单位引进急需紧缺专业高水平人才16人考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年四川省资阳市安岳县事业单位招聘90人考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年四川自贡市贡井区发展和改革局招聘公益性岗位人员2人考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年山东日照市市属事业单位招聘工作人员60人考前自测高频考点模拟试题(共500题)含答案详解.docx
- 2023年山东临沂市郯城县征集普通高等院校本科毕业生入伍12人考前自测高频考点模拟试题(共500题)含答案详解.docx
文档评论(0)