电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

家谱的设计与实现(二叉树)

家谱的设计与实现(二叉树)_第1页
1/9
家谱的设计与实现(二叉树)_第2页
2/9
家谱的设计与实现(二叉树)_第3页
3/9
家谱的设计与实现(树,查找) 家谱的设计主要是实现对家庭成员信息的建立、查找、插入、修改、删除等功能。可。基本功能如下: (1)家谱中每个成员的信息包括:姓名、性别。 (2)家谱祖先数据的录入(树的根结点)。 (3)家庭成员的添加:即添加某人的儿女(包括姓名和性别),儿女的数目由控制台端给出,然后输入相应的儿女姓名和性别(此处所有儿女的 姓名不能重名)。 (4)家庭成员的修改:可以修改某一成员的姓名。 (5)家庭成员的查询:查询某一成员在家族中的辈分(第几代),并能查询此成员的所有子女及这一辈的所有成员。 (6)家庭成员的删除:删除此成员时,若其有后代,将删除其所有后代成员。 #include #include #include #include #define MAX 10 typedef struct node{ //定义 data 存储结构 char name[MAX]; //姓名 char sex; //性别 int generation;//代目 }node; typedef struct ft{ //创建结构体 struct node l; //家谱中直系家属 struct ft *brother;//用来指向兄弟 struct ft *child;//用来指向孩子 }ft; ft *root; //root 是结构体 ft 的指针 ft *search(ft *p,char ch[]) // 搜索指针函数 { ft *q; 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....

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

家谱的设计与实现(二叉树)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部