PAT 数据结构集 4-05 家谱处理

本文介绍了如何处理家谱问题,通过实现getFamily函数构建孩子兄弟二叉树,并使用findmb函数查找特定关系,特别地,在查找过程中记录了被找到人所在sibling链的最左兄弟。
摘要由CSDN通过智能技术生成

这题我是先用getFamily函数读取家谱,保存为一棵孩子兄弟二叉树,然后在找人确定关系。为找寻兄弟节点是,在findmb这个找人函数多加了写东西。在找人的时候,可以把找到的人所在sibling链最左端的兄弟保存在ppmb_ls里。


<span style="font-size:18px;">#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <stdbool.h>
#include <assert.h>

int n, m;

typedef struct mb_s{// member
	char name[11];
	struct mb_s *sibl, *chld;
	int marg;	// margin
}mb_t;

mb_t*	mb;

mb_t*	getFamily();
bool	checkcp(char x[], char y[]);	// check child parent relatinship
bool	checkda(char x[], char y[]);	// check descendant ancestor relationship
bool	checks(char x[], char y[]);		// check sibling relationship

int main()
{
	scanf("%d%d", &n, &m);
	mb	= getFamily();
	assert(mb->name != NULL);

	char x[11], y[11], r[11];	// relationship
	int i;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值