欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    数据结构课程设计家族关系Word文档下载推荐.docx

    • 资源ID:7956029       资源大小:137.42KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计家族关系Word文档下载推荐.docx

    1、(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2.需求分析随着社会发展,人们使用纸质的家谱已经非常不方便而且不利于在家谱里进行添加和修改。而用算法设计一个家族关系查询系统则可以解决这个问题。数据结构的二叉树刚好满足家谱的基本结构。首先建立一个文件作为家谱,然后在文件中输入字符串,实现了在文件中按照数据的逻辑关系进进输入便可建立相应的三叉链表。然后就是进行数据的存储、删除及查找工作。3.算法分析本次设计研究的是建立家族关系,实现对家族成员关系相关查询的问题。在设计中使用的数据结构为树状结构,树状

    2、结构采用三叉链表实现。我们在建立好家族关系后将其存储在文件中,在文件中家族关系是以树的形式存储,运用树的操作使家族关系得以准确建立。 家族关系查询系统可分为六大模块,分别是创建、修改、查询、保存、退出等。建立家族关系模块,建立家族关系并存入文件。建立时首先输入家族关系的名称,以此名称为名建立文本文件。接下来按层输入成员姓名,输入一个在文件中写入一个字符串,以回车键结束。打开一个家族关系。在界面输入选项名,以家族关系名为文件名打开文件,如果家族关系不存在,返回空;如果存在,打开文件,读取文件。向家族中添加一个新成员,添加的新成员要根据其父亲确定其在家族中的位置。首先判断该父亲是否在此家族关系中,

    3、若存在,则查找其父亲,将新节点插入其父亲的最后一个孩子之后;若没有孩子,直接作为左孩子插入。以写入的方式打开文件,更新数组中的信息,然后将数组中的信息写入文件保存,关闭文件。查找功能模块,查找一个成员的所有祖先及其兄弟,查找一个成员的所有祖先路径,需要从它的父亲一直向上查找带根结点。查找一个成员的兄弟,一个成员的兄弟为其父亲除了该结点以外的所有孩子。对于要操作的结点,先判断它是否是根结点,若是根结点,则无兄弟;若不是根结点,则找到该结点的父亲。接着判断父亲的兄弟是否都存在,如果都不存在,则无兄弟;如果都存在,对父亲的孩子操作。4.源程序#include stdlib.hstring.h#inc

    4、ludetypedef char TElemType;typedef int status;typedef struct BiTPNode TElemType data10; struct BiTPNode *parent,*lchild,*rchild; /父亲及左右孩子指针BiTPNode,*BiPTree;BiPTree P;BiPTree T;/家谱的创建int Cre() system(cls); FILE *fp; /声明指向文件的指针 char filename40,str10; printf(请输入家谱名称: getchar(); gets(filename); /输入家谱名称

    5、 while(filename0=NULL) 家谱名不能为空,请重新输入: if(fp=fopen(filename,w)=NULL) %s家谱创建失败!n,filename); return 0;请输入家谱内容: while (strlen(gets(str)0) fputs(str,fp); /向文件写入字符串 putc(n,fp); fclose(fp); /关闭文件按任一键继续! getch(); return 1; status loc(BiPTree T,BiPTree &P,TElemType name10) if(T) P=T; /字符串的比较 if(!strcmp(name,

    6、T-data) return 1; if(loc(T-lchild,P,name) return 1;rchild,P,name) return 1; else return 0;/构造二叉树status inittree(BiPTree &T) T=(BiTPNode *)malloc(sizeof(BiTPNode); if(T) T-lchild=NULL;rchild=NULL;parent=NULL;/载入家谱status Crt(BiPTree & BiPTree Q,R,M,N; char filename40,name10; /清屏 R=(BiTPNode *)malloc(s

    7、izeof(BiTPNode); /分配存储空间 M=(BiTPNode *)malloc(sizeof(BiTPNode); N=(BiTPNode *)malloc(sizeof(BiTPNode);请输入家谱名:r%s家谱打开失败! inittree(T); fscanf(fp,%s,name); /从文件读入姓名 strcpy(T-data,name);%家谱打开失败! while(!feof(fp) if(loc(T,P,name) Q=(BiTPNode *)malloc(sizeof(BiTPNode); strcpy(Q- P-lchild=Q; /构建孩子 Q-parent=

    8、P; N=P; else if(!loc(T,P,name) R=N; R=R-lchild; while(R) M=R;rchild; M-rchild=Q;parent=M;信息载入成功,按任一键继续!/添加成员status in(BiPTree & char father10,name10; BiPTree Q,M;请输入要添加到该家谱中的人的父亲姓名: gets(father);loc(T,P,father) %s不在该家谱中!请重新输入:,father);请输入要添加到该家谱中的人的姓名: gets(name);P-lchild) else P=P- while(P) M=P;成员添

    9、加成功,按任一键继续!/删除成员status de(BiPTree & char name10;请输入要删除的人的姓名:rchild) if(P-parent-lchild=P) free(P); else if(P-lchild=P-rchild=P-成员删除成功,按任一键继续!status Show(TElemType e10) %s ,e);/二叉树的遍历status pre(BiPTree T,status(*visit)(TElemType10) if(T) if (*visit)(T-data) if (pre(T-lchild,visit) rchild,visit) retur

    10、n 1; else return 1;/家族成员查询status Sea(BiPTree T) BiPTree N;请输入要查寻的人的姓名: if(P=T) %s的父亲在该家谱中没有记载!,P-data); while(N-rchild=N) N=N-parent;%s的父亲是:%sndata,N-%s没有兄弟!rchild&rchild!=P) %s的兄弟有:,N-rchild-rchild=N) %s的祖先在该家谱中没有记载!%s的祖先是:,name,T-%s没有孩子!%s没有后代n%s的孩子有:lchild-%s的后代有: pre(P-lchild,Show);/文件的创建status

    11、write(BiPTree T,char filename40) a+%s文件创建失败! fprintf(fp,T- T=T- while(T) /输出status prewrite(BiPTree T,status(*visit)(BiPTree,char40),char filename40) if (T-lchild) (*visit)(T,filename); prewrite(T-lchild,visit,filename);rchild,visit,filename);status wrong() char a; scanf(%c,&a);无此选项,请重新选择!(按任一键继续!)/

    12、家谱的存储status Sav(BiPTree T) char filename40;请输入新的文件名: prewrite(T,write,filename);%s家谱保存成功,按任一键继续!/修改家谱status Upd() int xz; while(1) nnnn 家族成员的添加与删除操作 n 请选择 n 1.添加成员. n 2.删除成员. n 3.返回上一级. n 请选择:%dxz); switch(xz) case 1 : in(T);break; case 2 : de(T); case 3 : default : wrong(); break;main() P=(BiTPNode *)malloc(sizeof(BiTPNode); 家族关系查询系统 n 具体操作如下 n 1.创建家谱. n 2.载入家谱. n 3.修改家谱. n 4.查寻成员. n 5.保存家谱. n 6.退出程序. n 请选择操作: Cre(); Crt(T); Upd(); case 4 : Sea(T); case 5 : Sav(T); case 6 : return 0;5运行截图:


    注意事项

    本文(数据结构课程设计家族关系Word文档下载推荐.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开