C语言二叉树家谱管理系统(3)

2018-12-03 19:06

}

else { }

找某人所有祖先的代码:

p=p->lchild; if(p==NULL)

printf(\没有妻子\\n\

else { }

p=p->rchild; if(p==NULL)

printf(\没有儿子!\\n\else { }

printf(\的儿子:\while(p!=NULL) { }

printf(\

printf(\p=p->rchild;

void Ancestor(BTree *bt) {

BTree *p;

char xm[NAMEWIDTH]; printf(\输入姓名:\scanf(\p=FindNode(bt,xm);

9

}

if(p!=NULL)

Path(bt,p);

else

printf(\不存在%s\\n\

void DelAll(FamType fam[],int &n) { }

FILE *fp;

if((fp=fopen(\{ } n=0; fclose(fp);

printf(\不能打开家谱文件\\n\return;

2.7源程序

#include #include #include #define MaxWidth 40 #define MaxSize 30

#define NAMEWIDTH 10 typedef struct fnode

{ char father[NAMEWIDTH]; char wife[NAMEWIDTH]; char son[NAMEWIDTH]; }FamType;

typedef struct tnode {

char name[NAMEWIDTH]; struct tnode *lchild,*rchild; }BTree;

BTree *CreatBTree(char *root,FamType fam[],int n) {

10

int i=0,j;

BTree *bt,*p;

bt=(BTree *)malloc(sizeof(BTree)); strcpy(bt->name,root);

bt->lchild=bt->rchild=NULL;

while(ilchild=p->rchild=NULL; strcpy(p->name,fam[i].wife); bt->lchild=p; for(j=0;jrchild=CreatBTree(fam[j].son,fam,n); p=p->rchild; } }

return(bt); }

BTree *FindNode(BTree *bt,char xm[]) {

BTree *p=bt; if(p==NULL)

return(NULL); else { if(strcmp(p->name,xm)==0) return(p); else { bt=FindNode(p->lchild,xm); if(bt!=NULL) return(bt); else return(FindNode(p->rchild,xm)); } } }

void FindSon(BTree *bt) {

char xm[NAMEWIDTH];

11

BTree *p;

printf(\父亲姓名:\ scanf(\ p=FindNode(bt,xm); if(p==NULL) printf(\不存在%s的父亲!\\n\ else { p=p->lchild; if(p==NULL) printf(\没有妻子\\n\ else { p=p->rchild; if(p==NULL) printf(\没有儿子!\\n\ else { printf(\的儿子:\ while(p!=NULL) { printf(\ p=p->rchild; } printf(\ } } } }

int Path(BTree *bt,BTree *s) {

BTree *St[MaxSize]; BTree *p;

int i,flag,top= -1; do { while(bt) { top++; St[top]=bt; bt=bt->lchild; } p=NULL; flag=1;

12

while(top!=-1 && flag) { bt=St[top]; if(bt->rchild==p) { if(bt==s) { printf(\所有祖先:\ for(i=0;irchild; flag=0; } }

}while(top!=-1); return 0; }

void Ancestor(BTree *bt) {

BTree *p;

char xm[NAMEWIDTH]; printf(\输入姓名:\ scanf(\ p=FindNode(bt,xm); if(p!=NULL) Path(bt,p); else printf(\不存在%s\\n\}

void DelAll(FamType fam[],int &n) {

FILE *fp;

if((fp=fopen(\

13


C语言二叉树家谱管理系统(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(014)信息系统运行维护和技术支持服务合同

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

马上注册会员

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