日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 家族关系查询

發布時間:2023/12/14 c/c++ 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 家族关系查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、題目:
  • 二、設計要求:
  • 三、數據結構:
  • 四、家族樹報告
  • 五、家族樹代碼

前言

這個家族關系查詢的內容是博主課設的時候所做的,由于當時的技術不是很好,沒有實現對家族樹的層次遍歷(當然我現在也不會)。
如果你有興趣的話,可以嘗試一下對家族樹的層次遍歷實現

一、題目:

41.家族關系查詢 建立家族關系數據庫,實現對家族成員關閉的相關查詢

二、設計要求:

(1)建立家族關系并能存儲到文件中 (2)實現家族成員的添加 (3)可以查詢家族成員的雙親、祖先、兄弟、孩子和后代等信息 (4)該家族樹寬度至少5,高度至少5

三、數據結構:

樹狀采用三叉鏈表實現,隊列采用鏈式隊列

四、家族樹報告

家族樹報告下載

五、家族樹代碼

/*代碼作者:小狐貍*/ // //代碼仍有部分缺陷,由于個人技術的原因,沒有使用層次遍歷實現打印所有成員信息 //打印家族樹和存入文件只會存儲嫡系子代的信息 //注:Findloc函數在本代碼中的使用率很高,你可以使用該函數來查詢某個成員在家族樹中的位置(返回一個指針). // 代碼末尾有附帶部分可用函數,若需要擴展功能時將函數放置main主函數之前即可 #include<iostream> #include<stdio.h> #include<string.h> #include<stdlib.h> using namespace std; #define OK 1 #define ERROR -1 #define Max 200 //字符串數組最大值 typedef struct TNode{string Wife;//妻子的姓名,若沒有妻子時為空string Husband;//丈夫的姓名,若沒有丈夫時為空struct TNode *parent;//雙親指針struct TNode *brother;//兄弟指針struct TNode *children;//孩子指針,僅指向最年長的孩子 }tree,*Tree;//三叉鏈表 int AddChild(Tree &Now,string Husbandname,string Wifename);//添加孩子到雙親節點Now int AddZuXian(Tree &T,string Husbandname,string Wifename);//添加祖先 void CaiDanMain();//主菜單界面 int CheckCunZai(Tree T);//判斷某個節點是否有成員,有則返回OK,否則返回ERROR int CheckFile(string file);//判斷文件是否已經存在,存在返回OK,否則返回ERROR int ChangeZuXian(Tree &T,string Husbandname,string Wifename);//修改家族的祖先 int ChangeNow(Tree &Now,string Husbandname,string Wifename);//修改當前節點的信息,應保證當前節點存在 void Findloc(Tree T,string &Husbandname,string &Wifename,Tree &Now);//通過丈夫和妻子的名字查找到對應的節點,Now為記錄該節點的指針,遞歸循環(深度遍歷) void PrintTree(Tree T);//將家族樹的嫡系信息輸出 int PrintChild(Tree Now);//顯示某個節點的所有孩子,Now為當前節點 int PrintParent(Tree Now);//顯示當前節點的雙親信息,Now為當前節點 int PrintZuXian(Tree Now);//顯示祖先,Now為當前節點 int PrintBrother(Tree Now);//顯示兄弟,Now為當前節點 int PrintLater(Tree Now);//查詢當前節點的所有嫡系后代的信息,不包括當前節點,Now為當前節點 int InitTree(Tree &T);//初始化家族樹 int InputFile(Tree T,string file);//將家族樹存入文件中 int UploadFile(Tree &T,string file);//從已有的文件中將家族樹信息覆蓋int main() {Tree T;InitTree(T);//初始化while(1){//fox存儲用戶輸入的選項變量,初始值為0CaiDanMain();//主菜單顯示int fox=0;//選項的選擇cout<<"請選擇: ";cin>>fox;if(CheckCunZai(T)==ERROR&&(fox>3&&fox<13))//若祖先不存在時先輸入{cout<<"請先添加祖先!"<<endl;continue;}switch(fox){case 0:return 0;//退出系統case 1://選擇已有文件覆蓋當前家族樹{while(1){//truth1變量值為1時表示文件導入成功,并退出循環;值為0時文件導入失敗,顯示提示信息。初始值為0string file;cout<<"請輸入需要導入的家族姓氏: ";cin>>file;int truth1=0;truth1=UploadFile(T,file);if(truth1==OK)//從文件中導入家族樹成功時{cout<<"導入成功!"<<endl;break;}else{//truth2值為1時,繼續輸入家族姓氏;值為0時退出,初始值為1cout<<"導入失敗!退出按0,重新輸入家族姓氏按1"<<endl;int truth2=1;cin>>truth2;if(truth2==0) break;}}}break;case 2://將當前家族樹存入文件中{//flag值為1時,重新輸入家族姓氏;值為0時退出,初始值為1string file;int flag=1;while(1){cout<<"請輸入家族姓氏作為文件名: ";cin>>file;if(CheckFile(file)==OK)//文件名存在時{cout<<"該家族姓氏已存在,退出按0,重新輸入家族姓氏按1"<<endl;cin>>flag;if(flag==0)break;else continue;}if(CheckFile(file)==ERROR) break;}if(flag==0)//退出操作break;if(CheckFile(file)==ERROR)//文件名不存在時{InputFile(T,file);//將家族樹導入文件cout<<"操作成功!"<<endl;}}break;case 3://添加祖先{if(CheckCunZai(T)==OK)//若祖先已存在時{cout<<"祖先已存在!"<<endl;}else//不存在時,輸入祖先信息{string Husbandname,Wifename;cout<<"祖父(祖先): ";cin>>Husbandname;cout<<"祖母(祖先): ";cin>>Wifename;AddZuXian(T,Husbandname,Wifename);}}break;case 4://添加家族新成員{//flag1值為0時退出,為非0值時輸入后代信息,初始值為0int flag1=0;//若值為0時->退出此操作string Fathername,Mothername,Husbandname,Wifename;while(1)//當輸入的父親和母親找到時退出循環{//flag2值為0時退出,為非0值時重新輸入雙親信息,初始值為1cout<<"父親: ";cin>>Fathername;cout<<"母親: ";cin>>Mothername;Tree truth=NULL;//為NULL時->顯示提示信息,不為NULL時->輸入成員信息Findloc(T,Fathername,Mothername,truth);if(truth==NULL){int flag2=1;cout<<"未找到雙親,退出按0,重新輸入雙親按1"<<endl;cin>>flag2;if(flag2==0) break;else continue;}else{cout<<"查找成功!可輸入成員信息"<<endl;flag1=1;//查找成功時賦值為1,執行輸入成員信息break;}}if(flag1==0) break;//若為退出時,返回主界面Tree Now;//臨時指針cout<<"丈夫: ";cin>>Husbandname;cout<<"妻子: ";cin>>Wifename;Findloc(T,Fathername,Mothername,Now);//尋找雙親的節點AddChild(Now,Husbandname,Wifename);//添加孩子while(1){int flag3;//值為0時退出循環cout<<"輸入其兄弟按1,退出系統按0"<<endl;cin>>flag3;if(flag3==0)break;cout<<"丈夫: ";cin>>Husbandname;cout<<"妻子: ";cin>>Wifename;AddChild(Now,Husbandname,Wifename);//直接使用雙親節點}}break;case 5://修改家族祖先{string Husbandname,Wifename;cout<<"祖父(祖先): ";cin>>Husbandname;cout<<"祖母(祖先): ";cin>>Wifename;ChangeZuXian(T,Husbandname,Wifename);cout<<"修改成功!"<<endl;}break;case 6://修改某個家族成員{//flag值為0時退出,值為1時重新輸入成員信息并查找該成員,初始值為1string Husbandname,Wifename;int flag=1;while(1){//truth值為NULL時不存在該成員,不為NULL時成功找到成員信息,初始值為NULLcout<<"丈夫(舊): ";cin>>Husbandname;cout<<"妻子(舊): ";cin>>Wifename;Tree truth=NULL;Findloc(T,Husbandname,Wifename,truth);if(truth)//存在該成員時{cout<<"查找成功!"<<endl;break;}else//不存在該成員時{cout<<"查找失敗,退出按0,重新輸入按1!"<<endl;cin>>flag;if(flag==0) break;}}if(flag==0)break;//退出操作Tree Now;//臨時指針Findloc(T,Husbandname,Wifename,Now);cout<<"丈夫(新): ";cin>>Husbandname;cout<<"妻子(新): ";cin>>Wifename;ChangeNow(Now,Husbandname,Wifename);}break;case 7://顯示家族的祖先{PrintZuXian(T);}break;case 8://顯示某個成員的雙親{//Now為NULL時,無成員信息;不為NULL時,有成員信息,初始值為NULLstring Husbandname,Wifename;cout<<"丈夫: ";cin>>Husbandname;cout<<"妻子: ";cin>>Wifename;Tree Now=NULL;//臨時指針Findloc(T,Husbandname,Wifename,Now);if(Now)PrintParent(Now);else cout<<"該成員信息不存在,無法找出雙親!"<<endl;;}break;case 9://顯示兄弟{while(1){//Now為NULL時,無成員信息;不為NULL時,有成員信息,初始值為NULLstring Husbandname,Wifename;cout<<"丈夫: ";cin>>Husbandname;cout<<"妻子: ";cin>>Wifename;Tree Now=NULL;//臨時指針Findloc(T,Husbandname,Wifename,Now);if(Now)//找到信息時{PrintBrother(Now);break;}else//未找到成員信息時{//truth值為0時退出,非0時重新輸入成員信息。初始值為1cout<<"無該成員信息,退出按0,重新輸入信息按1"<<endl;int truth=1;cin>>truth;if(truth==0)break;}}}break;case 10://顯示孩子{while(1){//Now為NULL時,無成員信息;不為NULL時,有成員信息,初始值為NULLstring Husbandname,Wifename,Sonname,SonWifename;cout<<"丈夫: ";cin>>Husbandname;cout<<"妻子: ";cin>>Wifename;Tree Now=NULL;//臨時指針Findloc(T,Husbandname,Wifename,Now);//找到節點位置if(Now)//找到節點時{if(PrintChild(Now)==ERROR){cout<<"該成員無孩子!,退出按0,重新輸入信息按1"<<endl;int truth=0;cin>>truth;if(truth==0)break;}else break;}else//未找到成員信息時{cout<<"無該成員信息,退出按0,重新輸入信息按1"<<endl;int truth=0;cin>>truth;if(truth==0)break;}}}break;case 11://顯示所有后代{while(1){//Now為NULL時,無成員信息;不為NULL時,有成員信息,初始值為NULLstring Husbandname,Wifename;cout<<"丈夫: ";cin>>Husbandname;cout<<"妻子: ";cin>>Wifename;Tree Now=NULL;Findloc(T,Husbandname,Wifename,Now);if(Now)//存在時{PrintLater(Now);break;}else//不存在該成員時{cout<<"無該成員信息,退出按0,重新輸入信息按1"<<endl;int truth=0;cin>>truth;if(truth==0)break;}}}break;case 12://顯示家族樹{PrintTree(T);}break;case 13://清屏操作{system("cls");}break;default:break;}}return 0; } int AddChild(Tree &Now,string Husbandname,string Wifename)//添加孩子到雙親節點Now {if(Now->children==NULL)//沒有孩子時{Tree p;//創建新的節點p=new TNode;p->brother=NULL;p->children=NULL;p->Husband=Husbandname;p->Wife=Wifename;p->parent=Now;Now->children=p;}else//有孩子時{Tree now;now=Now->children;//指向主孩子while(now->brother!=NULL)//在兄弟中進行循環操作now=now->brother;Tree p;//創建新的節點p=new TNode;p->brother=NULL;p->children=NULL;p->Husband=Husbandname;p->Wife=Wifename;p->parent=Now;now->brother=p;//now此時為末位的兄弟節點}return OK; } int AddZuXian(Tree &T,string Husbandname,string Wifename)//添加祖先 {Tree t;t=T;t->Husband=Husbandname;t->Wife=Wifename;t->brother=NULL;t->parent=NULL;t->children=NULL;return OK; }void CaiDanMain()//主菜單界面 {cout<<endl;cout<<"-----------------------------<主菜單>----------------------------------"<<endl;cout<<"| 0 退出系統 |"<<endl;cout<<"| 1 選擇已有家族譜覆蓋當前家族樹 |"<<endl;cout<<"| 2 將嫡系家族樹存入文件 |"<<endl;cout<<"| 3 添加祖先 |"<<endl;cout<<"| 4 添加家族新成員[最年長的兄弟應首先輸入,無妻子時請填寫無] |"<<endl;cout<<"| 5 修改家族祖先 |"<<endl;cout<<"| 6 修改某個家族成員 |"<<endl;cout<<"| 7 顯示家族的祖先 |"<<endl;cout<<"| 8 顯示某個成員的雙親 |"<<endl;cout<<"| 9 顯示某個成員的兄弟 |"<<endl;cout<<"| 10 顯示某個成員的孩子 |"<<endl;cout<<"| 11 顯示某個成員的所有嫡系后代 |"<<endl;cout<<"| 12 顯示嫡系家族樹信息 |"<<endl;cout<<"| 13 清屏 |"<<endl;cout<<"------------------------------------------------------------------------"<<endl;cout<<endl; } int CheckCunZai(Tree T)//判斷某個節點是否有成員,有則返回OK,否則返回ERROR {Tree t;//臨時指針t=T;if(t->Husband==""&&t->Wife=="")//對當前節點進行判斷{return ERROR;}else return OK; } int CheckFile(string file)//判斷文件是否已經存在,存在返回OK,否則返回ERROR {//flag為文件句柄,flag=串1.find(串2)//flag的返回值為string::npos時則表示串2不為串1的子串string::size_type flag;flag=file.find(".txt");if(flag==string::npos)//不含有后綴.txt時,添加后綴file+=".txt";FILE*fp;char filename[Max];strcpy(filename,file.c_str());if((fp=fopen(filename,"r"))==NULL)//不存在時返回ERRORreturn ERROR;else return OK; } int ChangeZuXian(Tree &T,string Husbandname,string Wifename)//修改家族的祖先 {Tree t;t=T;if(t==NULL)return ERROR;t->Husband=Husbandname;t->Wife=Wifename;return OK; } int ChangeNow(Tree &Now,string Husbandname,string Wifename)//修改當前節點的信息,應保證當前節點存在 {Tree now;now=Now;now->Husband=Husbandname;now->Wife=Wifename;return OK; } void Findloc(Tree T,string &Husbandname,string &Wifename,Tree &Now)//通過丈夫和妻子的名字查找到對應的節點,Now為記錄該節點的指針,遞歸循環(深度遍歷) {if(T==NULL)return;else{if(Husbandname==T->Husband&&Wifename==T->Wife)//若當前節點符合條件則Now指向當前節點Now=T;Findloc(T->children,Husbandname,Wifename,Now);//先對孩子進行遍歷Findloc(T->brother,Husbandname,Wifename,Now);//后對兄弟進行遍歷} } void PrintTree(Tree T)//將家族樹的嫡系信息輸出 {//time表示第幾代孩子,初始值為1Tree childs;//臨時指針childs=T;int time=1;//第幾代while(childs)//在孩子中進行循環{//cout<<"第"<<time<<"代:"<<endl;if(time!=1)cout<<"第"<<time<<"代:"<<endl;else//祖先節點時cout<<"第1代(祖先):"<<endl;Tree brothers;brothers=childs;while(brothers)//在兄弟中進行循環{cout<<brothers->Husband<<"(男) ";cout<<brothers->Wife<<"(女)"<<endl;brothers=brothers->brother;}time++;childs=childs->children;} } int PrintChild(Tree Now)//顯示某個節點的所有孩子,Now為當前節點 {cout<<endl;Tree k;if(Now->children==NULL)//沒有孩子時,返回錯誤{return ERROR;}k=Now->children;cout<<"[孩子]"<<endl;while(k)//在兄弟中進行循環{cout<<k->Husband<<"(男) ";cout<<k->Wife<<"(女)"<<endl;k=k->brother;}return OK; } int PrintParent(Tree Now)//顯示當前節點的雙親信息,Now為當前節點 {cout<<endl;Tree now;now=Now;Tree parents=NULL;//parents為指向當前節點父母的指針if(now->parent==NULL)//若now為祖先節點時無父親和母親{cout<<"當前為祖先,沒有雙親!"<<endl;return ERROR;}else parents=now->parent;cout<<"[父親] ";cout<<parents->Husband<<endl;cout<<"[母親] ";cout<<parents->Wife<<endl;return OK; } int PrintZuXian(Tree Now)//顯示祖先,Now為當前節點 {Tree k;//臨時指針k=Now;while(k->parent!=NULL)//當往上循環到沒有雙親的結點時為祖先{k=k->parent;}cout<<"[祖先] "<<endl;//祖先共有兩個人cout<<k->Husband<<"(男) ";cout<<k->Wife<<"(女)"<<endl;return OK; } int PrintBrother(Tree Now)//顯示兄弟,Now為當前節點 {Tree k;//臨時指針if(Now->parent==NULL)//若為祖先時{cout<<"祖先無兄弟!"<<endl;return ERROR;}k=Now->parent->children;//指向主孩子if(k->brother!=NULL){cout<<"[兄弟] "<<endl;}else{cout<<"無兄弟!"<<endl;return ERROR;}while(k)//在節點的兄弟中進行循環輸出{if(k->Husband!=Now->Husband&&k->Wife!=Now->Wife)//不輸出當前節點的成員信息,僅輸出兄弟的信息{cout<<k->Husband<<"(男) ";cout<<k->Wife<<"(女)"<<endl;}k=k->brother;}return OK; } int PrintLater(Tree Now)//查詢當前節點的所有嫡系后代的信息,不包括當前節點,Now為當前節點 {//time表示第幾代孩子,初始值為1Tree k;if(Now->children==NULL)//無孩子時{cout<<"無后代信息"<<endl;return ERROR;}k=Now->children;int time=1;//表示第幾代的孩子while(k)//孩子中循環{Tree p;p=k;cout<<"第"<<time<<"代:"<<endl;while(p)//兄弟中循環{cout<<p->Husband<<"(男) ";cout<<p->Wife<<"(女)"<<endl;p=p->brother;}time++;k=k->children;}return OK; } int InitTree(Tree &T)//初始化家族樹 {T=new TNode;//創建頭節點T->Husband="";//初始化為空T->Husband="";T->children=NULL;T->brother=NULL;T->parent=NULL;return OK; } int InputFile(Tree T,string file)//將嫡系家族樹存入文件中 {//flag為文件句柄,flag=串1.find(串2)//若串2不為串1子串時,flag值為string::nposif(CheckFile(file)==OK)//文件已存在時返回錯誤return ERROR;string::size_type flag;flag=file.find(".txt");if(flag==string::npos)//沒有后綴時添加后綴file+=".txt";FILE*fp;char filename[Max];char Husbandname[Max],Wifename[Max];char Fathername[Max],Mothername[Max];strcpy(filename,file.c_str());fp=fopen(filename,"w");Tree k;//孩子指針k=T;while(k){Tree p;//兄弟指針p=k;while(p){if((p->Husband!=T->Husband)&&(p->Wife!=T->Wife))//不為祖先節點時,將父母信息輸入{strcpy(Fathername,(p->parent->Husband).c_str());strcpy(Mothername,(p->parent->Wife).c_str());fprintf(fp,"%s ",Fathername);fprintf(fp,"%s\t",Mothername);}strcpy(Husbandname,(p->Husband).c_str());strcpy(Wifename,(p->Wife).c_str());fprintf(fp,"%s ",Husbandname);//寫入當前節點信息fprintf(fp,"%s\n",Wifename);p=p->brother;}k=k->children;}fprintf(fp,"#\n");//結束標志fclose(fp);//關閉文件return OK; } int UploadFile(Tree &T,string file)//從已有的文件中將家族樹信息覆蓋,若該文件不存在則返回ERROR {//flag為文件句柄,flag=串1.find(串2)//若串2不為串1子串時,flag值為string::nposstring::size_type flag;//判斷是否含有后綴.txtflag=file.find(".txt");if(flag==string::npos)//不含后綴時添加后綴.txtfile+=".txt";char filename[Max];strcpy(filename,file.c_str());//將file復制到filenameFILE*fp=fopen(filename,"r");//傳入參數filename為字符數組類型if(fp==NULL)//文件不存在時return ERROR;char ZuFu[Max],ZuMu[Max];fscanf(fp,"%s",ZuFu);//將祖先信息存入fscanf(fp,"%s",ZuMu);string ZuFuname(ZuFu);string ZuMuname(ZuMu);AddZuXian(T,ZuFuname,ZuMuname);while(1){char Father[Max],Mother[Max];char Husband[Max],Wife[Max];fscanf(fp,"%s",Father);string Fathername(Father);if(Fathername=="#")break;fscanf(fp,"%s",Mother);fscanf(fp,"%s",Husband);fscanf(fp,"%s",Wife);string Mothername(Mother);string Husbandname(Husband);string Wifename(Wife);Tree Now;Findloc(T,Fathername,Mothername,Now);//找到雙親節點if(Now)//存在雙親節點時AddChild(Now,Husbandname,Wifename);}fclose(fp);return OK; } /* int CountBrother(Tree Now,string Husbandname,string Wifename)//統計當前節點兄弟的個數 {//可用int sum=0;//兄弟的個數Tree t;if(Now->parent==NULL)//當前為祖先時return 0;t=Now->parent->children;while(t){if(t->Husband!=Husbandname&&t->Wife!=Wifename)sum++;t=t->brother;}return sum; } */ /* int InputTree(Tree &T)//輸入家族成員到家族樹中 {string Husbandname,Wifename,Fathername,Mothername;int flag1=2;//默認為需要重新輸入雙親cout<<"祖父(祖先): "<<endl;cin>>Husbandname;cout<<"祖母(祖先): "<<endl;AddZuXian(T,Husbandname,Wifename);//添加覆蓋祖先cout<<"家庭成員輸入前,請輸入其父母的信息!"<<endl<<endl;while(1)//根據父親和母親的名字輸入家庭成員{if(flag1==2){//當輸入新成員時需要重新輸入父母信息cout<<"請輸入父親:"<<endl;cin>>Husbandname;cout<<"請輸入母親:"<<endl;cin>>Wifename;}Tree Now=NULL;//臨時節點指針Findloc(T,Fathername,Mothername,Now);//從家族樹中尋找符合父母親的節點,用Now保存雙親節點int flag2=1;if(Now==NULL)//若家族樹中無該雙親時{cout<<endl;cout<<"未查詢到該雙親!"<<endl;cout<<"-------------------------"<<endl;cout<<"| 0 退出輸入 |"<<endl;cout<<"| 1 重新輸入雙親 |"<<endl;cout<<"| 2 打印已有家族樹 |"<<endl;cout<<"-------------------------"<<endl;cout<<endl;cin>>flag2;int time=1,truth=1;//time表示第幾代,truth表示遞歸中當前節點與前者的關系switch(flag2){case 0:return OK;case 1:{cout<<"父親: ";cin>>Fathername;cout<<"母親: ";cin>>Mothername;}break;case 2:{int time=1,flag=1;PrintTree(T,time,flag);}break;default:break;}if(flag2==2) continue;}else cout<<"成功找到雙親!可輸入成員信息"<<endl;string Husband,Wife;cout<<endl;cout<<"丈夫:"<<endl;cin>>Husband;cout<<"妻子:"<<endl;cin>>Wife;if(CheckChildren(Now)==ERROR)//若沒有孩子時,直接插入到父母節點之后{AddChild(Now,Husband,Wife);}if(CheckChildren(Now)==OK)//若有孩子時,插入孩子的兄弟節點的后面{AddBrother(Now->children,Husband,Wife);//傳入孩子節點}cout<<endl;cout<<"------------------------"<<endl;cout<<"| 0 退出輸入 |"<<endl;cout<<"| 1 輸入兄弟 |"<<endl;cout<<"| 2 輸入新的成員 |"<<endl;cout<<"------------------------"<<endl<<endl;cin>>flag1;switch(flag1){case 0:return OK;case 1:{}break;case 2:{}break;default:break;}}return OK; }*/ /* int AddBrother(Tree &Now,string Husbandname,string Wifename)//添加新成員到兄弟節點之后,前提:Now應為其兄弟節點 {Tree now;//臨時指針now=Now;while(now->brother!=NULL)//從Now節點的孩子中找到需要插入的位置,即兄弟節點的最后一個位置now=now->brother;Tree p;p=new TNode;//創建一個節點p->Husband=Husbandname;p->Wife=Wifename;p->brother=NULL;p->parent=Now;p->children=NULL;//雙親節點的孩子指向最年長的孩子 } */ /* int CheckChildren(Tree Now)//檢測某個節點是否有孩子,有則返回OK,否則返回ERROR {//可用Tree now;now=Now->children;if(now->Husband!=""&&now->Wife!="")return OK;else return ERROR; } int CheckBrother(Tree Now)//檢測某個節點是否有兄弟,有則返回OK,否則返回ERROR {//可用Tree k;//臨時指針if(Now->parent!=NULL)//不為祖先時,指向主孩子{k=Now->parent;//指向雙親k=k->children;//指向兄弟}else k=Now;if(k->brother==NULL)return ERROR;return OK; } */

總結

以上是生活随笔為你收集整理的C++ 家族关系查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。