• 大小: 3.58MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-21
  • 语言: 其他
  • 标签:

资源简介

学了一个学期的数据结构,实训期间用数据结构结合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

评论

共有 条评论

相关资源