C语言家谱管理程序,[C语言]家谱 - 代码贴 - BCCN

这个博客介绍了一个使用C语言编写的家谱管理程序,包括建立祖先节点、添加家庭成员(孩子和兄弟)、输出指定家庭成员、确定成员辈分、输出指定辈分成员和删除家庭成员等功能。程序通过结构体表示家庭成员,并采用非递归和递归方法进行操作。
摘要由CSDN通过智能技术生成

#include

#include

#include

struct node;

node *creat();//建立祖先

int add_child(node *head);//添加家庭成员

int add_brother(node *head);//添加兄弟成员

void print(node *head,char *x);//输出指定家庭成员

int beifen(node *p,char *x);//确定成员辈分

void print1(node *head);//先序遍历 输出家庭成员

void chengyuan(node *head,int s);//输出相应辈分成员

node *shanchu(node *head,char *s);//删除成员

struct node//结构体变量

{

char data[20];//家庭成员

int n;//辈分

node *lchild,*rchild;//左孩子是孩子,右孩子是兄弟

};

node *creat()//建立祖先

{

node *head;

head=(node *)malloc(sizeof(node));//分配存储空间

char s[20];

printf("输入祖先名字:");

scanf("%s",&s);

strcpy(head->data,s);// 赋值

head->n=1;//分配辈分

printf("祖先载入成功!\n");

return head;//返回祖先节点(根节点)

}

int add_child(node *head)//添加家庭成员 非递归法

{

char y[20],x[20];

node *p,*q;//定义新变量

q=head;

printf("输入加入父节点姓名:");

scanf("%s",&x);//输入父节点

p=(node *)malloc(sizeof(node));//动态分配存储空间

printf("输入要添加的孩子:");

scanf("%s",&y);//输入孩子信息

strcpy(p->data,y);//赋值到节点

p->lchild=NULL;//新节点左孩子为空

p->rchild=NULL;//新节点右孩子为空

while(q!=NULL)//循环左孩子查找

{

if(strcmp(x,q->data)==0)//比较

{

if(q->lchild==NULL)//如果此结点没有孩子则添加到左孩子

{

p->n=q->n+1;//孩子为父节点的辈分加1

q->lchild=p;//新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值