一、项目简介
家谱是一种以表谱形式,记载一个以血缘关系为主体的家族世袭繁衍和重要任务事迹的特殊图书体裁。家谱是中国特有的文化遗产,是中华民族的三大文献(国史,地志,族谱)之一,属于珍贵的人文资料,对于历史学,民俗学,人口学,社会学和经济学的深入研究,均有其不可替代的独特功能。本项目兑对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息,插入家族成员,删除家族成员的功能。
二、项目功能要求
本项目的实质是完成兑家谱成员信息的建立,查找,插入,修改,删除等功能,可以首先定义家族成员数据结构,然后将每个功能作为一个成员函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得到运行结果。
三、具体实现
3.1 数据结构:树、链表
四、算法分析
本项目要求构造一个家庭树,家庭树需要非常方便地进行插入和删除节点,所以该项目的数据结构用链表来实现,链表可以灵活地操作,如果使用数组来存储这道题的数据会非常难。
当需要添加家庭成员使,先执行搜索函数查找某个人。找到之后将需要添加的链表加在该节点下方。兄弟节点连在brother_Next指针后,孩子则连在child后,添加孩子时需要检测孩子指针是否为空,如果不是空就将操作指针移动到最后一个孩子,然后对brother_Next进行操作,如果没有孩子,直接将该节点接在child节点上。
删除节点比较麻烦,需要使用后缀遍历的方法遍历该节点的子树,然后将所有的子树全部都删除掉并将空间释放掉。
五、程序截图
开始界面
完善家庭
添加家庭成员
删除家庭成员
更改家庭成员姓名
查看成员信息
六、程序优点这个程序我自定义地增加了查看成员信息的功能,能够在输入姓名之后给出该节点的信息,包括父节点、兄弟节点、第一代子节点
搜索函数对于查找失败有很好的容错性,不会因为查找失败导致程序崩溃,以上程序运行图已经给出相应的展示
七、体会
这个项目让我更好地认识了树这个数据结构。这个项目中的树是一种普通的树,不是二叉树等特殊的树。这种树中每个节点可以有任意个子节点,更加复杂,特别是在节点的删除上。树是一种非常有用的数据结构,树使得很多数据有了条理,二分搜索树等更是给搜索提供了非常方便的方法。