家譜樹 樹的利用

2021-06-17 01:31:38 字數 3667 閱讀 4538

#include #include #include #include #define maxsize 20

typedef struct treenode

treenode;

treenode *tree;

void createtree(treenode *t);//建立乙個家譜

void printtree(treenode *t);//輸出乙個家譜

void addmember(treenode *t);//新增乙個成員

void deletemember(treenode *t);//刪除乙個成員

void deletenode(treenode *p);//刪除乙個結點,以及它的所有子結點

int childth(treenode *t,char *names);//查詢names是他父母的第幾個孩子

treenode *findmember(treenode *t,char *names);//查詢某人資訊

void printmember(treenode *t,char *names);//輸出查詢的人的資訊

void findchild(treenode *t,char *names);//查詢某人孩子

treenode *findparent(treenode *t,char *names);//查詢父母

void findbrother(treenode *t,char *names);//查詢兄弟

void levelorder(treenode *t);//層次遍歷

int generation(treenode *t);//求該家譜發展了多少代

int max(int a,int n);

int allno(treenode *t);//求該家族的總成員數目

void main()

break;

default:

break;

} printf("\n\n\t\t==按任意鍵返回主選單==\n\t\t");

fflush(stdin);

scanf("%c",&ch);

}while(k!=10);

}/***********************1.建立***********************/

/***********************檢測完畢***********************/

void createtree(treenode *t) }}

/***********************2.輸出***********************/

/***********************檢測完畢***********************/

void printtree(treenode *t)

else

printf("null");

} printf("\n***********************************\n");

for(i=1;i<=t->num;i++) }

/***********************3.新增***********************/

/***********************檢測完畢***********************/

void addmember(treenode *t)

printf("\t\t===新增人員完成===\n");

}/***********************4.刪除***********************/

/***********************檢測完畢***********************/

void deletemember(treenode *t)

p2->num--;

} printf("\t===刪除人員操作完成!===\n");

}/***********************檢測完畢***********************/

treenode *findmember(treenode *t,char *names)

} return null;

}/***********************檢測完畢***********************/

void deletenode(treenode *p)

else if(p->num!=0) }

}/***********************檢測完畢 ***********************/

int childth(treenode *t,char *names)

} return n;

}/***********************5.查詢某人資訊***********************/

/***********************檢測完畢************************/

void printmember(treenode *t,char *names)

printf("\t\t===他是家族的第%d代成員!===\n\n",i); }}

/***********************6.查詢孩子***********************/

/***********************檢測完畢************************/

void findchild(treenode *t,char *names)//6

} }}/***********************8.查詢父母***********************/

/***********************檢測完畢***********************/

treenode *findparent(treenode *t,char *names)

else }

/***********************7.查詢兄弟***********************/

/************************檢測完畢***********************/

void findbrother(treenode *t,char *names)

} }}/***********************9.代數***********************/

/***********************/

//int a[20]=;

int i=0,j,n;

int generation(treenode *t)

; //if(t==null)

//printf("%d",t->num);

//if(t->num==0)

//else

if(t->num!=0)

//a[i]++;

//printf(" !a[%d]=%d!",i,a[i]);

} n=max(a,20)+1;

return n;

}int max(int a,int n)

return m;

}/****************層次遍歷********************/

void levelorder(treenode *t)

} printf("\n\t===該家族總人口數是:%d===\n",m);

}

利用樹製作的簡易家譜

ifndef parentschildren h included define parentschildren h included include include define maxsize 100 typedef struct anode arcnode typedef struct jdd...

家譜樹(拓撲)

家譜樹 問題描述 有個人的家族很大,輩分關係很混亂,請你幫整理一下這種關係。給出每個人的孩子的資訊。輸出乙個序列,使得每個人的後輩都比那個人後列出。輸入格式 第1行乙個整數n 1 n 100 表示家族的人數。接下來n行,第i行描述第i個人的兒子。每行最後是0表示描述完畢。輸出格式 輸出乙個序列,使得...

家譜樹(拓撲排序)

有個人的家族很大,輩分關係很混亂,請你幫整理一下這種關係。給出每個人的孩子的資訊。輸出乙個序列,使得每個人的後輩都比那個人後列出。第1行乙個整數n 1 n 100 表示家族的人數 接下來n行,第i行描述第i個人的兒子 每行最後是0表示描述完畢。輸出乙個序列,使得每個人的後輩都比那個人後列出 如果有多...