哪位数据结构编程高手帮帮忙

[问题描述]例如有这样的一对老夫妻(A、B),他们生有n男m女,其中,某个儿子(D)娶妻(C)生有x男y女,某个女儿(E)嫁夫(F)生有i男j女,其余的子女有可能婚嫁,也... [问题描述]
例如有这样的一对老夫妻(A、B),他们生有n男m女,其中,某个儿子(D)娶妻(C)生有x男y女,某个女儿(E)嫁夫(F)生有i男j女,其余的子女有可能婚嫁,也有可能单身,已婚的可能生有孩子若干,其孩子相继婚嫁……
数据对象是以上所有的家庭成员,要求建立他们之间的夫妻、子女等关系并方便查询。
[测试数据]
按时间顺序建立家庭关系;
按姓名查询某个家庭成员及其配偶和孩子。
能不能帮忙写下源程序啊(用C、C++都行)
展开
 我来答
我是dongping
2008-12-13 · TA获得超过644个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:260万
展开全部
是不是用C++实现呀?
这是一个典型的多叉树问题!
最早的祖先用根节点表示,以下依次是他的/她的子女。这个就组成一棵树。
每一棵树的数据包括了:
名称、父节点指针、第一个孩子的指针、配偶指针、下一个兄弟姐妹的指针。
用专业的说法就是父子兄弟链表的多叉树表示法。
这是有专门的理论研究的问题,可以看一下相关的书籍是怎么实现的。可能会比较复杂一些呀!
/////////////////////////////////////////
单个成员的数据结构:
struct Node
{
char Name[20];
int Age;
struct Node *father,*mother,*FirstChild,*NextSibling,*mate;
//父母、大孩子、配偶和兄弟姐妹(紧接着的)的结点指针
}
class Family
{
public:
struct Node *root;
static int count;
Family(struct Node *one):root(one)//构造函数
{}
~Family()
{delete root;}//析构函数
void addmember(struct Node *p);
void deletemember(struct Node *p);
struct Node *FindMember(char p[20]);//按照姓名查询该结点
}
int Family::count=0;//初始化静态成员

具体的函数实现自己写就是了,不是很难的啦!
如果需要找某个成员的所有孩子,首先找到大孩子,然后找他的/她的兄弟姐妹结点NextSibling,依次链接下去寻找即可呀!
yukunlinykl
2008-12-08 · TA获得超过3224个赞
知道小有建树答主
回答量:1049
采纳率:0%
帮助的人:1198万
展开全部
用树 的数据结构
但要改一下
加入配偶指针
就是,对于每一个节点
有本身的数据域
有一个配偶域,有很多个孩子域

因为要按姓名查询
所以可先按字典顺序用线性表记录下每个人地址
线性表的节点有一个本身数据域,还有个指针域,记录该人在树上的位置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友147e3a0
2008-12-09 · TA获得超过703个赞
知道小有建树答主
回答量:855
采纳率:100%
帮助的人:388万
展开全部
用数据库做,我觉得也很简单的。!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式