91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 14KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-29
  • 語言: C/C++
  • 標簽: Data??structure??

資源簡介

(c++語言實現(xiàn))運用簡易的孩子兄弟表示法實現(xiàn)家譜管理系統(tǒng),具體功能有實現(xiàn)家族成員的增刪改查,顯示n代子女,某成員所有子女

資源截圖

代碼片段和文件信息


#include
#include?
#include?
#include?
#include?
#include
#include?
#include?
#include
using?namespace?std;
#define?MAX?10

typedef?struct?Node//定義data存儲結構,存放個人信息
{???????char?name[MAX];?//姓名
????????char?sex;//性別
????????int?generation;//代
}Node;
typedef?struct?Treenode//創(chuàng)建結構體
{
????????struct?Node?l;?//家譜中直系家屬
????????struct?Treenode?*brother;//用來指向兄弟
????????struct?Treenode?*child;//用來指向孩子
}Treenode;
?Treenode?*search(Treenode?*pchar?ch[]);?//?搜索指針函數(shù),搜索需要修改和獲得的結點,輸入頭指針,姓名
?int?generation(Treenode?*pchar?ch[]);?//獲得搜索到的成員的代的返回值
?void?children(Treenode?*pchar?b[]char?cint?d);//建立家譜孩子結點,創(chuàng)建結點并對l賦值保存
?void?output(Treenode?*n);?//搜索到數(shù)據(jù)的輸出
?void?InitTree();?//初始化(創(chuàng)建)
?void?Add();?//添加
?void?Change();?//修改
?void?Delete();?//刪除?
?void?Export();?//到出?
?void?IntPut();?//導入?
?void?show();

void?show();

Treenode?*root;?//root是指向結構體Treenode的指針、始祖節(jié)點?
fstream?f;??
Treenode?*search(Treenode?*pchar?ch[])//?搜索指針函數(shù),搜索需要修改和獲得的結點,輸入頭指針,姓名
{
????Treenode?*q;
?????if(p==NULL)?return?NULL;//沒有家譜,頭指針下為空
?????if(strcmpi(p->l.namech)==0)//比較姓名,看是否重名或是否存在
??????????return?p;//家譜不為空,頭指針下有這個人
?????if(p->brother)
????{
????????//遞歸過程
????????????q=search(p->brotherch);//在兄弟中找
????????????if(q)
????????????return?q;//找到
????}
?????if(p->child)
????{
????????????q=search(p->childch);//在孩子中找
????????????if(q!=NULL)
????????????return?q;?//找到
????}
??????return?NULL;//沒有找到
}
Treenode?*search1(Treenode?*pint?n)//?搜索指針函數(shù),搜索需要修改和獲得的結點,輸入頭指針,姓名
{
????Treenode?*q;
?????if(p==NULL)?return?NULL;//沒有家譜,頭指針下為空
?if(p->l.generation==n)//比較姓名,看是否重名或是否存在
??????????return?p;//家譜不為空,頭指針下有這個人
?????if(p->brother)
????{
????????//遞歸過程
????????????q=search1(p->brothern);//在兄弟中找
????????????if(q)
????????????return?q;//找到
????}
?????if(p->child)
????{
????????????q=search1(p->childn);//在孩子中找
????????????if(q!=NULL)
????????????return?q;?//找到
????}
??????return?NULL;//沒有找到
}
void?children(Treenode?*pchar?b[]char?cint?d)
{
int?i;
????for(i=0;i????p->l.name[i]=b[i];
????p->l.sex=c;
????p->l.generation=d;
}
void?AddIntPut(char?pa[]char?b[]char?cint?d)
{
Treenode?*n;
Treenode?*t;
n?=?search(rootpa);

if(n?==?NULL)
{
return;
}
t?=?search(rootb);
if(t?!=?NULL)
{
return;
}
if(n->child==NULL)//孩子信息添加當滿足該父輩無子女時,進入條件判斷
????{
????????????n->child=(Treenode?*)malloc(sizeof(Treenode));
????????????n->child->brother=NULL;
????????????n->child->child=NULL;
????????????children(n->childbcd);
????}
????else//當該父輩之前已經(jīng)有子女的時候,則此新添加的成員為添加的前一個孩子的兄弟
????{
????????n=n->child;
????????while(n->brother!=NULL)?//添加另一個孩子
????????n=n->brother;
???
??? Treenode?*t;
????????t=(Treenode?*)malloc(sizeof(Treenode));
????????children(tbcd);
????????t->brother=NULL;
????????t->child=NULL;
????????n->brother=t;
????}
}
void?IntPut()?//導入?
{
Treenode?*n;
n?=?root;

評論

共有 條評論