欢迎来到天天文库
浏览记录
ID:1455367
大小:322.50 KB
页数:19页
时间:2017-11-11
《《数据结构》课程设计报告格式 家谱管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构课程设计报告设计题目:家谱管理学院经济与管理学院专业信息管理与信息系统班级信管112学号3110561044姓名吴俊贤2012秋季学期19报告格式按以下标题及内容书写,标题为小四号宋体,正文内容为五号字,16开打印。一、问题描述设计一个程序,采用二叉树表示一个家谱关系。二、基本要求1)用缩进表示法输出家谱二叉树。2)查找某人所有的儿子。3)查找某人所有的祖先。三、算法思想首先,定义一个二叉树;然后按前序建立二叉树,把左子树定义为孩子,右子树定义为兄弟,同时输入人员所处的代数,以便于对祖先的查找;接下来,用前序遍历二叉树,
2、并且把二叉树逆时针旋转90度输出,以此表示缩进法输出家谱;然后,定义一个查找结点的函数,用于接下来查找孩子和祖先时先找出要查找的人;然后,定义查找祖先的函数,用指针查找某人的祖先,包括直系与旁系;接下来,定义查找儿子的函数,把查找到的结点的左孩子,以及左孩子的右孩子,直到没有左孩子为止,依次输出;最后,是主函数,负责调用各个函数为系统服务。四、数据结构定义二叉树结构体:typedefstructfamily{chardata;intcount;structfamily*lchild;structfamily*rchild;}fa
3、mily;五、模块划分(1)family*Createfamily()功能是:按前序建立二叉树(2)voidPreorder(family*T,intj)功能是:把二叉树进行前序遍历(3)voidprintbitree(family*b,intn)功能是:缩进法输出二叉树(4)family*SearchX(family*b,charX)功能是:查找结点X19(5)voidSearchXAncestor(family*b,charX)功能是:找结点X的所有祖先(6)voidSearchXSon(family*b,charX)功能是
4、:查找结点X的所有儿子(7)voidmain()主函数功能是:调用各个函数为实现各种功能服务六、源程序#include#includetypedefstructfamily{chardata;intcount;structfamily*lchild;structfamily*rchild;}family;family*Createfamily(){inti;family*e;charx;scanf("%c,%d",&x,&i);getchar();if(x=='0')e=NULL;else{
5、e=(family*)malloc(sizeof(family));e->data=x;e->count=i;printf("tt请输入%c结点的孩子结点以及代数:",e->data);e->lchild=Createfamily();printf("tt请输入%c结点的兄弟结点以及代数:",e->data);e->rchild=Createfamily();}returne;}19voidPreorder(family*T,intj){if(T!=NULL&&T->count6、->data);Preorder(T->lchild,j);Preorder(T->rchild,j);}}voidprintbitree(family*b,intn){inti;if(b==NULL)return;printbitree(b->rchild,n+1);for(i=0;i=0){printf("---");printf("%c",b->data);}printbitree(b->lchild,n+1);}family*SearchX(family*b,charX)7、{family*p;if(b==NULL)returnNULL;elseif(b->data==X)returnb;else{p=SearchX(b->lchild,X);if(p!=NULL)returnp;19else{returnSearchX(b->rchild,X);}}}voidSearchXAncestor(family*b,charX){inth;family*p;p=(family*)malloc(sizeof(family));printf("请输入孩子的名字:");scanf("%c",&X);p=Sear8、chX(b,X);h=p->count;if(b==NULL){printf("树为空!");return;}else{printf("祖先:");Preorder(b,h);}}voidSearchXSon(family*b,charX){family*p
6、->data);Preorder(T->lchild,j);Preorder(T->rchild,j);}}voidprintbitree(family*b,intn){inti;if(b==NULL)return;printbitree(b->rchild,n+1);for(i=0;i=0){printf("---");printf("%c",b->data);}printbitree(b->lchild,n+1);}family*SearchX(family*b,charX)
7、{family*p;if(b==NULL)returnNULL;elseif(b->data==X)returnb;else{p=SearchX(b->lchild,X);if(p!=NULL)returnp;19else{returnSearchX(b->rchild,X);}}}voidSearchXAncestor(family*b,charX){inth;family*p;p=(family*)malloc(sizeof(family));printf("请输入孩子的名字:");scanf("%c",&X);p=Sear
8、chX(b,X);h=p->count;if(b==NULL){printf("树为空!");return;}else{printf("祖先:");Preorder(b,h);}}voidSearchXSon(family*b,charX){family*p
此文档下载收益归作者所有