数据结构大作业--家谱

数据结构大作业--家谱

ID:34395335

大小:103.74 KB

页数:9页

时间:2019-03-05

数据结构大作业--家谱_第1页
数据结构大作业--家谱_第2页
数据结构大作业--家谱_第3页
数据结构大作业--家谱_第4页
数据结构大作业--家谱_第5页
资源描述:

《数据结构大作业--家谱》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、课程设计6家谱基本要求:从文件中读入家庭成员建立家谱,以孩子兄弟表示法存储。基本功能:(1)在家谱中添加新成员,并追加到文件中。(2)输出指定家庭的所有成员。(3)确定指定成员在家族中的辈份(第几代)。(4)输出指定辈的所有成员。文件输入样本:(也可以是英文名字)吴义昌(吴本宜、吴本质、吴本身)吴本宜(吴正民、吴正权)吴正民(吴鲲、吴鹏)吴正权(吴德峰)吴本质(吴正跃)吴正跃(吴德红、吴德龙)吴本身(吴正亮、吴正党)吴正亮(吴昊、吴昱)实验源程序:#include#include#include#include<

2、ctype.h>#defineNAME_length50//名字最大长度#defineLINE_length100//文本行最大长度typedefstructcc{structcc*child,*next;//next指向同辈份的人物charName[];}JPNode;voidclear(charp[],intn)//清空字符数组p{while(n-->0)*p++='';}staticJPNode*last=NULL;staticintlast_level=0;voidAddJP(JPNode**head,charconstname[],intlevel){JP

3、Node**s=head,*r=NULL;JPNode*p=(JPNode*)malloc(2*sizeof(void*)+strlen(name)+1);p->child=p->next=NULL;strcpy(p->Name,name);if(*s==NULL){*s=p;last=p;return;}if(level-last_level==1){last->child=p;last=p;last_level=level;return;}if((level==last_level)&&(*s!=NULL)){last->next=p;last=p;last_lev

4、el=level;return;}r=*s;//r指向家谱树last_level=level;while(level-->0)//找到相同的辈分{while(r->next!=NULL)r=r->next;r=r->child;}//以兄弟连接while(r->next!=NULL)r=r->next;r->next=p;last=p;}voidCreatJP(JPNode**head){charname[NAME_length]="",line[LINE_length]="";char*p=NULL;intlevel=0,i=0;//辈分,以制表符个数表示FILE*f

5、p=NULL;fp=fopen("jiapu_data.txt","r");if(fp==NULL){printf("openerror!");exit(1);}while(level=0,i=0,fgets(line,LINE_length,fp)!=NULL){p=line;while(*p++=='t')level++;//计算辈分,计算完后p指向名字开始处while(line[i++]!='');line[i-1]='';//读入的换行符用字符串结束标识符替换strcpy(name,p-1);AddJP(head,name,level);clear

6、(name,NAME_length);clear(line,LINE_length);}fclose(fp);}voidDispJP(JPNode*p)//从p指向的结点显示该家族{staticintlevel=0;inti;if(p!=NULL){for(i=0;iName);}elsereturn;level++;DispJP(p->child);level--;DispJP(p->next);}////////////////////////////////////////////

7、////////////////////////////////*在家谱中添加新成员,并追加到文件中*/intEqual(charconst*p,charconstq[])//判断两个字符串是否相等{while(*p++==*q++)if(*p==''&&*q=='')return(1);return(0);}JPNode*Find_Name(JPNode*s,char*parent)//定位家谱中的成员。返回其指针(地址){staticJPNode*here=NULL;if(s==NULL)returnhere;if(Equal

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

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

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