数据结构课程设计总结报告(2)

2019-04-01 17:46

个字符串,以回车键结束。打开一个家族关系。在界面输入选项名,以家族关系名为文件名打开文件,如果家族关系不存在,返回空;如果存在,打开文件,读取文件。向家族中添加一个新成员,添加的新成员要根据其父亲确定其在家族中的位置。首先判断该父亲是否在此家族关系中,若存在,则查找其父亲,将新节点插入其父亲的最后一个孩子之后;若没有孩子,直接作为左孩子插入。以写入的方式打开文件,更新数组中的信息,然后将数组中的信息写入文件保存,关闭文件。查找功能模块,查找一个成员的所有祖先及其兄弟,查找一个成员的所有祖先路径,需要从它的父亲一直向上查找带根结点。查找一个成员的兄弟,一个成员的兄弟为其父亲除了该结点以外的所有孩子。对于要操作的结点,先判断它是否是根结点,若是根结点,则无兄弟;若不是根结点,则找到该结点的父亲。接着判断父亲的兄弟是否都存在,如果都不存在,则无兄弟;如果都存在,对父亲的孩子操作。

六、源代码

#include #include #include #include typedef char TElemType;

typedefint status; typedefstructBiTPNode{ TElemTypedata[10];

structBiTPNode *parent,*lchild,*rchild; //父亲及左右孩子指针

}BiTPNode,*BiPTree; BiPTree P; BiPTree T;

//家谱的创建 intCre() {

system(\

FILE *fp; //声明指向文件的指针 char filename[40],str[10]; printf(\请输入家谱名称:\ getchar();

gets(filename); //输入家谱名称 while(filename[0]==NULL) {

printf(\家谱名不能为空,请重新输入:\ gets(filename);

}

if((fp=fopen(filename,\ {

printf(\家谱创建失败!\\n\ return 0; }

printf(\请输入家谱内容:\\n\ while (strlen(gets(str))>0) {

fputs(str,fp); //向文件写入字符串 putc('\\n',fp); }

fclose(fp); //关闭文件 printf(\按任一键继续!\ getch(); return 1; }

statusloc(BiPTreeT,BiPTree&P,TElemType name[10]){ if(T)

{

P=T; //字符串的比较

if(!strcmp(name,T->data)) return 1; if(loc(T->lchild,P,name)) return 1; if(loc(T->rchild,P,name)) return 1; }

else }

//构造二叉树

statusinittree(BiPTree&T){

T=(BiTPNode *)malloc(sizeof(BiTPNode)); if(T)

return 0;

return 0;

T->lchild=NULL; T->rchild=NULL; T->parent=NULL; return 1; }

//载入家谱

statusCrt(BiPTree&T){ FILE *fp; BiPTree Q,R,M,N;

char filename[40],name[10]; system(\清屏

R=(BiTPNode *)malloc(sizeof(BiTPNode)); //分配存储空间

M=(BiTPNode *)malloc(sizeof(BiTPNode)); N=(BiTPNode *)malloc(sizeof(BiTPNode)); printf(\请输入家谱名:\ getchar(); gets(filename);

while(filename[0]==NULL) {

printf(\家谱名不能为空,请重新输入:\ gets(filename); }

if((fp=fopen(filename,\ {

printf(\家谱打开失败!\\n\


数据结构课程设计总结报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:采购付款制度及流程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: