资源简介
学了一个学期的数据结构,实训期间用数据结构结合c,写了一个家谱项目,核心知识关于树,适合初学者参考学习。
代码片段和文件信息
#include
#include
#include
typedef struct FamilyTree
{
//int age;
char sex[3];
int ichildnum;
char name[50];
char spousename[50];
struct FamilyTree *parent;
//struct FamilyTree *father;
//struct FamilyTree *spouse;
struct FamilyTree *childnode[20];
}Genealogy*family;
//建立家谱
Genealogy * Establish(family &Tree)
{
char ch;
family ptem=(family)malloc(sizeof(Genealogy));
if(ptem==NULL)
{
printf(“分配内存失败“);
system(“pause“);
return NULL;
}
ptem->parent=Tree;
ptem->ichildnum=0;
printf(“请输入姓名:“);
fflush(stdin);
gets(ptem->name);
printf(“请输入性别:“);
fflush(stdin);
scanf(“%s“ptem->sex);//性别sex[3],此处后期可能会出错
printf(“是否已婚?(Y:是 N:否) “);
fflush(stdin);
ch=getchar();
if(ch==‘n‘||ch==‘N‘)
{
strcpy(ptem->spousename“无“);
return ptem;
}else if(ch==‘y‘||ch==‘Y‘)
{
printf(“请输入配偶姓名:“);
fflush(stdin);
gets(ptem->spousename);
printf(“请输入孩子的数量:“);
fflush(stdin);
scanf(“%d“&ptem->ichildnum);
for(int i=0;iichildnum;i++)
{
printf(“请输入%s的第%d个孩子的信息:\n“ptem->namei+1);
fflush(stdin);
ptem->childnode[i]=Establish(ptem);
}
}else
{
printf(“Error!!!\n“);
system(“pause“);
}
return ptem;
}
//输出家谱信息
void OutputGenealogy(family Tree)
{
if(Tree==NULL)
{
printf(“Error!!!“);
system(“pause“);
return;
}
printf(“姓名:%s %s“Tree->nameTree->sex);
printf(“ 配偶的名字:%s \n子女数目:%d\n“Tree->spousenameTree->ichildnum);
for(int i=0;iichildnum;i++)
{ printf(“----------------------------------------------“);
printf(“\n%s的第%d个孩子的姓名:%s %s\n“Tree->namei+1Tree->childnode[i]->nameTree->childnode[i]->sex);
}
//printf(“**********************************************“);
for(int i=0;iichildnum;i++)
{
printf(“----------------------------------------------\n“);
OutputGenealogy(Tree->childnode[i]);
}
}
//查找家族成员并输出相关信息
Genealogy * FindMember(family &Treechar name[50]) //查找成员
{
if(Tree==NULL)
return NULL;
if (strcmp(Tree->namename) == 0||strcmp(Tree->spousenamename) == 0)
{
return Tree;
}
for(int i=0;iichildnum;i++)
{
family p=NULL;
p=FindMember(Tree->childnode[i]name);
if(p!=NULL)
return p;
}
return NULL;
}
void OutPutFindMember(family &Tree) //打印某一成员的相关信息
{
family NODEnode;
char names[50];
printf(“请输入需要查找家族成员的姓名:“);
//scanf(“%s“names);
fflush(stdin);
gets(names);
//system(“pause“);//停顿输入查找成员
NODE=FindMember(Treenames);
if(NODE==NULL)
{
printf(“输入有误!“);
system(“pause“);
return ;
}
else {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-04 20:11 家谱 -数据结构\
文件 11069 2016-10-20 08:30 家谱 -数据结构\main.cpp
文件 4218368 2017-12-04 20:11 家谱 -数据结构\家谱.ppt
- 上一篇:Online Judge
- 下一篇:Linux下用QT开发音乐播放器
评论
共有 条评论