- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构(二叉树)家谱管理系统
摘 要
在家谱课程设计中采用二叉树来表示家谱关系,由于在家谱中每个家族成员的子女不止一个,而双亲只有一个,所以采用二叉树结构来描述家族成员之间的关系。在家谱课程设计中还用到单链表,在设计中要将二叉树存储在文件中,最终要读取文件中的记录,要将文件中的数据还原到内存中组成二叉树结构,而文件中元素与元素之间的结构是线性,而且直接对文件中的数据操作很不方便,所以将文件中的元素存储在单链表中,再对单链表操作还原成内存中的二叉树。 在对家谱的文件操作中,为了还原家谱方便,采用按层遍历的顺序保存二叉树中各结点的信息,在层次遍历中,使用队列来实现二叉树的层次遍历。
、修改家谱成员信息、删除家谱成员等七大功能;第二个是家谱操作功能模块,实现了查找某人记录、查找某人的孩子、查找某人的祖先、用括号表示法输出家谱、用凹入表示法输出家谱等六大功能。
关键词:
Binarytnode save search addRecord del change clear
本程序功能框架图
项目总体设计
1.1 需求分析
(1) 文件操作功能:记录输入、记录输出、清除全部文件记录和将家谱记录存盘。初始化:用户可输入一个家族的族谱,输入完成之后可保存在文件中。在其后的操作中,可从文件里读取族谱信息、增加新的家族成员、修改已有的家族成员、删除已存在的家族成员、可清除所有的家族成员信息。操作完成之后可保存在文件中。
(2) 家谱操作功能:用括号表示法和凹入法输出家谱二叉树,并能查找某人的配偶、所有孩子、所有祖先、兄弟等功能。
1.2系统功能模块设计:
一.问题描述
本课程设计的主要问题是选择一种数据结构来描述家谱中家族成员之间的关系,在此数据结构上加之一些操作,选用特定的算法来实现家谱操作的功能和文件操作的功能。
二.基本要求
设计要求:编写一个程序,采用一棵二叉树表示一个家谱关系。
具体要求:
(1) 文件操作功能:记录输入、记录输出、清除全部文件记录和将家谱记录存盘。
(2) 家谱操作功能:用括号表示法和凹入法输出家谱二叉树,并能查找某人所有的儿子,查找某人的所有祖先。
三.概要设计
1.数据结构的设计
在家谱课程设计中采用二叉树来表示家谱关系,由于在家谱中每个家族成员的子女不止一个,而双亲只有一个,所以采用二叉树结构来描述家族成员之间的关系。在家谱课程设计中还用到单链表,在设计中要将二叉树存储在文件中,最终要读取文件中的记录,要将文件中的数据还原到内存中组成二叉树结构,而文件中元素与元素之间的结构是线性,而且直接对文件中的数据操作很不方便,所以将文件中的元素存储在单链表中,再对单链表操作还原成内存中的二叉树。
在对家谱的文件操作中,为了还原家谱方便,采用按层遍历的顺序保存二叉树中各结点的信息,在层次遍历中,使用队列来实现二叉树的层次遍历。
2.算法的设计
本设计从总体上主要分2个模块,分别是家谱操作模块和文件操作模块。
家谱操作模块:
1)Binarytnode* Binarytree::bulid(Binarytnode* p,int num);
//输入家谱,形参p为二叉树根结点的地址,形参num为结点的编号,建立二叉树并返回这棵二叉树的根结点的地址。
算法:首先先建立一个二叉树结点,提示用户输入该结点的姓名,将
用户输入的姓名写入到该结点的成员变量name中,将形参num写入到该结点的成员变量number中,将双亲结点的地址赋给结点的成员变量的双亲指针,提示用户是否有左孩子,若有左孩子则递归调用通过形参将双亲结点的地址传递过去,递归调用返回的地址赋给它的双亲结点的左孩子指针,右孩子的建立同理可得,通过递归来建立整棵二叉树。
2)Binarytnode* Binarytree::searchRecord(string name);
//形参name要查找的姓名,按姓名查找某人记录,若找到记录则返回该节点的地址,反之,则返回一个空指针。
算法:通过层次遍历来和每个结点的成员变量name比较若姓名匹配则返回该节点的地址。首先判断二叉树的根结点是否为为空,若为空则不进行查找。反之,则将根结点入队列,然后进入一个循环体,使循环为真的条件是队列不为空,循环体语句是取队头元素,然后对该元素的判断它的成员变量name是否与查找的姓名相匹配。若匹配则返回该结点的地址,若不匹配,则删除队头元素将它的左右孩子入队列(左右孩子不空的情况下),进行循环。若直到遍历完整棵子树都还没找到,则返回一个空指针。
3)void Binarytree::searchChild(string name);
//形参name要查找的姓名,按姓名查找
您可能关注的文档
- 商品混凝土知识讲座_图文.ppt.ppt
- 山东济宁凌云项目市场研究及策划定位报告_87页.doc
- 商业空间(案例分析)【ppt】.ppt
- 四川大学 医学免疫学课件 13 超敏反应.ppt.ppt
- 人美版小学美术三年级上册册第六课《红色的画》课件1.ppt.ppt
- 室内金典案例赏析PPT课件.ppt
- 山西汾西矿业(集团)有限责任公司贺西煤矿300万ta改扩建工程.pdf
- 乳品部分农产品贮藏与加工课件(ppt 82页).ppt
- 全新版大学英语综合教程第三册Unit4.ppt
- 【商业地产PPT】-万泽太湖湾商业地产项目一期配套规划方案-6221102010PPTPT.ppt
- 2025-2026学年小学信息技术(信息科技)第二册电子工业版(2022)教学设计合集.docx
- 医药行业2025市场准入案例深度解析与合规实践指南.docx
- 企业知识管理平台内容生态构建策略在创新型企业中的应用.docx
- 2025年智慧农业物联网在农业电商平台搭建报告.docx
- 2025年智能医疗诊断技术突破,准确率提升案例分析.docx
- 2025年智慧农业物联网在农产品物流环节的应用现状分析.docx
- 创业孵化基地2025年建设资金申请可行性分析及风险预警报告.docx
- 2025至2030纽特伦行业发展趋势分析与未来投资战略咨询研究报告.docx
- 2025年智慧农业示范:乡村生态采摘园智能化管理系统实施策略报告.docx
- 母婴电商内容电商模式创新报告:2025年市场洞察.docx
最近下载
- 《家庭路由器密码修改.doc VIP
- 光伏施工电站施工质量管理体系及保证措施.docx VIP
- 退换货应急服务措施及保障.docx VIP
- 医疗器械公司组织机构图和部门设置说明【模板范本】.docx
- 2020年最新小学数学教师编制考试新课标测试题及答案(三).docx VIP
- 拼多多法律顾问岗面试题库参考答案和答题要点.docx VIP
- 腾讯法律顾问岗面试题库参考答案和答题要点.docx VIP
- 小米法律顾问岗面试题库参考答案和答题要点.docx VIP
- 网易法律顾问岗面试题库参考答案和答题要点.docx VIP
- 惠普HP DeskJet Ink Advantage Ultra 4800 系列参考指南.pdf
文档评论(0)