数据结构家谱课程设计报告.doc

数据结构家谱课程设计报告.doc

ID:56970642

大小:89.00 KB

页数:7页

时间:2020-07-29

数据结构家谱课程设计报告.doc_第1页
数据结构家谱课程设计报告.doc_第2页
数据结构家谱课程设计报告.doc_第3页
数据结构家谱课程设计报告.doc_第4页
数据结构家谱课程设计报告.doc_第5页
资源描述:

《数据结构家谱课程设计报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、家谱管理系统姓名:田鑫磊学号:1514020421(1)功能部分:本程序共实现了6个功能分别为:1.读出家谱并显示2.确定指定成员在家族中的辈份3.输出指定辈的所有成员4.在家谱中添加新成员,并追加到文件中5.输出指定家庭的所有成员6.退出本系统(2)各功能的算法思想:1.读出家谱并显示存储结构用栈,按照先显示双亲,然后显示其所有孩子的顺序显示所有的家庭成员。2.确定指定成员在家族中的辈份用求成员所在的二叉树中的层数(按层遍历二叉树)来确定,这里采用的是递归算法3.输出指定辈的所有成员此处定义了一个新的结构体类型(增加存储节点所在的层数),定义如下:struct{BTNode*q;int

2、loc;//存结点所在的层数}qu[10];并用一个队列来比较显示同辈分的所有成员。4.在家谱中添加新成员,并追加到文件中首先,输入一个新成员的名字;然后,输入其双亲;之后,再添加到整个存储二叉链表中。然后,再将新的存储结构写回到文件中。二叉链表的结点类型为:typedefstructnode{ElemTypedata[10];//存放成员的名字structnode*child;//其孩子指针structnode*brother;//其兄弟指针}BTNode;5.输出指定家庭的所有成员首先,设一个栈,并设一个标记位,先置1;然后,找到输入的要待显示的成员,将标记位置0;再次,显示其孩子和

3、兄弟,依次下去直到显示完其所有的亲戚。6.退出本系统通过一个输入字符q来控制,每完成一个功能,系统提示是否要继续操作:当q为“Y”或者“y”时,显示菜单,程序继续执行;当q为其他字符时,程序执行结束,退出本系统。三、详细设计:通过一个do-while语句来控制各个模块的选择和实现。1.读出家谱并显示voiddisplay(BTNode*b){BTNode*q[10];//定义一个栈intfront,rear;intk;BTNode*p;p=b;k=0;front=-1;rear=0;q[rear]=p;//头结点先入栈while(front

4、];printf("%s",p->data);//头结点出栈,并显示printf("(");disbr(p->child);printf(")");if(p->child!=NULL)//显示其孩子{rear++;q[rear]=p->child;}if(p->brother!=NULL)//显示其兄弟{rear++;q[rear]=p->brother;}}}2.确定指定成员在家族中的辈分intgeneration(BTNode*b,inth,ElemTypex[])//用递归的思想{inti;if(b==NULL)return(0);i=strcmp(b->data,x);//比

5、较是否相等if(i==0)return(h);intL=generation(b->child,h+1,x);if(L==0)L=generation(b->brother,h,x);return(L);}3.输出指定辈的所有成员voidlayer(BTNode*t,intm){struct//定义一个新的结点类型,在孩子兄弟存储结构的基础上添加一个数据域存其所在层数{BTNode*q;intloc;}qu[10];intfront,rear;BTNode*p;p=t;k=0;front=-1;rear=0;qu[rear].q=p;qu[rear].loc=1;if(qu[rear].

6、loc==m)//找到m辈的即输出printf("%c",p->data);while(frontchild!=NULL){rear++;qu[rear].q=p->child;qu[rear].loc=qu[front].loc+1;if(m==qu[rear].loc)printf("%s",p->child->data);}if(p->brother!=NULL){rear++;qu[rear].q=p->brother;qu[rear].loc=qu[front].loc;if

7、(qu[rear].loc==m)printf("%s",p->brother->data);}}}4.在家谱中添加新成员,并追加到文件中voidadd(BTNode*&b,ElemTypey[],ElemTypex[]){charfilename[20]="";FILE*fp;BTNode*p,*q;inti;p=FindNode(b,y);q=(BTNode*)malloc(sizeof(BTNode));for(i=0;x[i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。