
哪位数据结构编程高手帮帮忙
[问题描述]例如有这样的一对老夫妻(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++都行) 展开
例如有这样的一对老夫妻(A、B),他们生有n男m女,其中,某个儿子(D)娶妻(C)生有x男y女,某个女儿(E)嫁夫(F)生有i男j女,其余的子女有可能婚嫁,也有可能单身,已婚的可能生有孩子若干,其孩子相继婚嫁……
数据对象是以上所有的家庭成员,要求建立他们之间的夫妻、子女等关系并方便查询。
[测试数据]
按时间顺序建立家庭关系;
按姓名查询某个家庭成员及其配偶和孩子。
能不能帮忙写下源程序啊(用C、C++都行) 展开
3个回答
展开全部
是不是用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,依次链接下去寻找即可呀!
这是一个典型的多叉树问题!
最早的祖先用根节点表示,以下依次是他的/她的子女。这个就组成一棵树。
每一棵树的数据包括了:
名称、父节点指针、第一个孩子的指针、配偶指针、下一个兄弟姐妹的指针。
用专业的说法就是父子兄弟链表的多叉树表示法。
这是有专门的理论研究的问题,可以看一下相关的书籍是怎么实现的。可能会比较复杂一些呀!
/////////////////////////////////////////
单个成员的数据结构:
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,依次链接下去寻找即可呀!
展开全部
用树 的数据结构
但要改一下
加入配偶指针
就是,对于每一个节点
有本身的数据域
有一个配偶域,有很多个孩子域
因为要按姓名查询
所以可先按字典顺序用线性表记录下每个人地址
线性表的节点有一个本身数据域,还有个指针域,记录该人在树上的位置
但要改一下
加入配偶指针
就是,对于每一个节点
有本身的数据域
有一个配偶域,有很多个孩子域
因为要按姓名查询
所以可先按字典顺序用线性表记录下每个人地址
线性表的节点有一个本身数据域,还有个指针域,记录该人在树上的位置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用数据库做,我觉得也很简单的。!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询