-
大小: 10KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-05-04
- 語言: C/C++
- 標(biāo)簽: C語言??家族譜??數(shù)據(jù)結(jié)構(gòu)??
資源簡介
數(shù)據(jù)結(jié)構(gòu)作業(yè)
編程語言:使用C語言
數(shù)據(jù)結(jié)構(gòu):樹
簡介:實現(xiàn) 家族譜。擁有增、刪、改、查的功能。 親測可用
代碼片段和文件信息
#include?
#include?
#include?
int?num?=?0;
struct?node
{
int?Num;
char?Name[20];
char?Sex;
struct?node?*next[10];
struct?node?*parent;
};
void?Menu(struct?node?*Tree);
void?Create(struct?node?*node);
void?PrintAll(struct?node?*Tree);
struct?node?*Search(struct?node?*Tree?char?name[]);
void?Print(struct?node?*Tree?char?name[]);
void?Add(struct?node?*Tree);
void?Correct(struct?node?*Tree);
void?Delete(struct?node?*Tree);
void?main()
{
struct?node?*Tree;
Tree?=?(struct?node*)?malloc?(sizeof(struct?node));
strcpy(Tree->Name?“0“);
Tree->parent?=?NULL;
Tree->next[0]?=?NULL;
Menu(Tree);
}
void?Menu(struct?node?*Tree)
{
int?ch;
char?name[20];
while?(1)
{
fflush(stdin);
printf(“請選擇你的操作\n“);
printf(“1:輸入家譜信息建立樹\n“);
printf(“2:在家族中查找某人并輸出其相應(yīng)信息\n“);
printf(“3:添加新的成員\n“);
printf(“4:輸出整個家譜信息\n“);
printf(“5:修改某個人的信息\n“);
printf(“6:刪除某個人的信息\n“);
printf(“7:退出整個程序\n“);
printf(“你的選擇是:“);
scanf(“%d“&ch);
printf(“\n“);
fflush(stdin);
if(ch?==?7)?break;
switch(ch)
{
case?1:
printf(“請輸入姓名:“);
scanf(“%s“?Tree->Name);
fflush(stdin);
printf(“請輸入性別:(女G?男B)“);
scanf(“%c“?&Tree->Sex);
fflush(stdin);
Create(Tree);
printf(“\n\n“);
break;
case?2:
if(strcmp(Tree->Name?“0“)?==?0)
{
printf(“家族譜未建立\n\n“);
break;
}
printf(“請輸入要查找的人物姓名:“);
scanf(“%s“name);
fflush(stdin);
Print(Search(Tree?name)?name);
printf(“\n\n“);
break;
case?3:
if(strcmp(Tree->Name?“0“)?==?0)
{
printf(“家族譜未建立\n\n“);
break;
}
Add(Tree);
printf(“\n\n“);
break;
case?4:
if(strcmp(Tree->Name?“0“)?==?0)
{
printf(“家族譜未建立\n\n“);
break;
}
printf(“整個家族的信息如下:\n“);
PrintAll(Tree);
printf(“\n\n“);
break;
case?5:
if(strcmp(Tree->Name?“0“)?==?0)
{
printf(“家族譜未建立\n\n“);
break;
}
Correct(Tree);
printf(“\n\n“);
break;
case?6:
if(strcmp(Tree->Name?“0“)?==?0)
{
printf(“家族譜未建立\n\n“);
break;
}
Delete(Tree);
printf(“\n\n“);
break;
}
}
}
void?Create(struct?node?*node)
{
struct?node?*NewNode;
NewNode?=?(struct?node*)?malloc?(sizeof(struct?node));?//申請配偶節(jié)點(diǎn)內(nèi)存空間
node->next[0]?=?NewNode;?//節(jié)點(diǎn)連接
NewNode->parent?=?node;
printf(“請輸入%s的配偶姓名:(若無配偶,則輸入0)?“?node->Name);
scanf(“%s“?NewNode->Name);
fflush(stdin);
if(strcmp(NewNode->Name?“0“)?==?0)?
{
node->Num?=?0;?//無配偶默認(rèn)無子女
return;
}
if(node->Sex?==?‘G‘)?NewNode->Sex?=?‘B‘;?//設(shè)置配偶參數(shù)
else?NewNode->Sex?=?‘G‘;
NewNode->Num?=?node->Num;?//配偶子女?dāng)?shù)
NewNode->next[0]?=?NULL;
printf(“請輸入%s的子女?dāng)?shù):“?node->Name);
scanf(“%d“&node->Num);
for(int?i?=?1;?i?<=?node->Num;?i?++)
{
NewNode?=?(struct?node*)?malloc?(sizeof(struct?node));?//申請子女節(jié)點(diǎn)內(nèi)存空間
printf(“請輸入%s的第%d個子女的姓名:“?node->Name?i)
評論
共有 條評論