#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表示描述完畢。輸出乙個序列,使得每個人的後輩都比那個人後列出 如果有多...