第一范文网 - 专业文章范例文档资料分享平台

数据结构课程设计之简易家谱 报告

来源:用户分享 时间:2025/9/20 11:32:42 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

课程设计(论文)

附录一:程序源代码

#include #include #include #include

#define NAME_length 50 //名字最大长度 #define LINE_length 100 //文本行最大长度 typedef struct cc {

struct cc *child, *next;//next指向同辈份的人物 char Name[]; }JPNode;

void clear(char p[],int n) //清空字符数组p { }

static JPNode *last = NULL; static int last_level = 0;

void AddJP(JPNode **head, char const name[], int level) {

JPNode **s = head, *r = NULL;

JPNode *p = (JPNode *)malloc( 2*sizeof(void *) + strlen(name) + 1 ); p->child = p->next = NULL; strcpy(p->Name,name); while(n-- > 0)

*p++ = '\\0';

if( *s == NULL)

{

16

课程设计(论文)

}

*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_level = 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; }

void CreatJP(JPNode **head) {

char name[NAME_length]=\

char *p = NULL;

int level=0,i=0; //辈分,以制表符个

数表示

FILE *fp = NULL;

fp = fopen(\

if(fp == NULL){ printf(\ while(level=0, i=0, fgets(line,LINE_length,fp) != NULL)

17

课程设计(论文)

{

p = line;

while(*p++ == '\\t')level++; //计算辈分 ,计算完后p指向名字开始处

while(line[i++] != '\\n')

;

line[i-1]='\\0'; //读入的换行符用字符串结束标识

符替换 }

void DispJP(JPNode *p)//从p指向的结点显示该家族 {

static int level=0; int i; }

fclose(fp);

strcpy(name,p-1);

AddJP(head,name,level);

clear(name,NAME_length); clear(line,LINE_length);

if(p != NULL)

{

for(i=0;i

}

else return; level++;

DispJP(p->child); }

level--;

DispJP(p->next);

18

课程设计(论文)

///////////////////////////////////////////////////////////////////////////

/*在家谱中添加新成员,并追加到文件中*/

int Equal(char const *p,char const q[])//判断两个字符串是否相等 { }

JPNode *Find_Name(JPNode *s, char *parent)//定位家谱中的成员。返回其指针(地址) {

static JPNode *here = NULL; if(s == NULL)return here;

if(Equal(s->Name,parent) == 1)return (here=s);

while(*p++ == *q++)if(*p == '\\0' && *q == '\\0')return (1); return (0);

here = Find_Name(s->child,parent); }

void Print_FILE(JPNode *p,FILE *fp) {

static int level=0;

int i;

here = Find_Name(s->next,parent); return here;

if(p != NULL)

{

for(i=0;i

}

else return; level++;

19

搜索更多关于: 数据结构课程设计之简易家谱 报告 的文档
数据结构课程设计之简易家谱 报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3di9a7slaf0c4dk2wbn6_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top