资源简介

数据结构作业 编程语言:使用C语言 数据结构:树 简介:实现 家族谱。拥有增、删、改、查的功能。 亲测可用

资源截图

代码片段和文件信息

#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:在家族中查找某人并输出其相应信息\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)); //申请配偶节点内存空间

node->next[0] = NewNode; //节点连接
NewNode->parent = node;

printf(“请输入%s的配偶姓名:(若无配偶,则输入0) “ node->Name);
scanf(“%s“ NewNode->Name);
fflush(stdin);

if(strcmp(NewNode->Name “0“) == 0) 
{
node->Num = 0; //无配偶默认无子女
return;
}

if(node->Sex == ‘G‘) NewNode->Sex = ‘B‘; //设置配偶参数
else NewNode->Sex = ‘G‘;
NewNode->Num = node->Num; //配偶子女数
NewNode->next[0] = NULL;

printf(“请输入%s的子女数:“ node->Name);
scanf(“%d“&node->Num);

for(int i = 1; i <= node->Num; i ++)
{
NewNode = (struct node*) malloc (sizeof(struct node)); //申请子女节点内存空间
printf(“请输入%s的第%d个子女的姓名:“ node->Name i)

评论

共有 条评论