数据结构家谱管理系统
时间: 2023-12-26 10:06:21 浏览: 96
家谱管理系统数据结构.pdf
以下是一个简单的数据结构家谱管理系统的代码示例:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 定义家庭成员类
class FamilyMember {
public:
string name;
vector<FamilyMember*> children;
FamilyMember(string n) {
name = n;
}
void addChild(FamilyMember* child) {
children.push_back(child);
}
};
// 家谱管理系统类
class FamilyTree {
public:
FamilyMember* root;
FamilyTree(string rootName) {
root = new FamilyMember(rootName);
}
// 添加子女
void addChildren(string parentName, vector<string> childrenNames) {
FamilyMember* parent = findMember(root, parentName);
if (parent != nullptr) {
for (string name : childrenNames) {
FamilyMember* child = new FamilyMember(name);
parent->addChild(child);
}
}
}
// 查找成员
FamilyMember* findMember(FamilyMember* current, string name) {
if (current->name == name) {
return current;
} else {
for (FamilyMember* child : current->children) {
FamilyMember* result = findMember(child, name);
if (result != nullptr) {
return result;
}
}
}
return nullptr;
}
// 打印家谱
void printFamilyTree() {
printMember(root, 0);
}
// 递归打印成员及其子女
void printMember(FamilyMember* member, int level) {
for (int i = 0; i < level; i++) {
cout << " ";
}
cout << member->name << endl;
for (FamilyMember* child : member->children) {
printMember(child, level + 1);
}
}
};
int main() {
// 创建家谱管理系统
FamilyTree familyTree("张三");
// 添加子女
familyTree.addChildren("张三", {"李四", "王五"});
familyTree.addChildren("李四", {"赵六", "钱七"});
familyTree.addChildren("王五", {"孙八"});
// 打印家谱
familyTree.printFamilyTree();
return 0;
}
```
这个家谱管理系统使用了树的数据结构来表示家庭成员之间的关系。每个家庭成员都有一个名字和一个子女列表。通过添加子女和查找成员的功能,可以构建和管理家谱。最后,通过打印家谱的功能,可以将家谱以树形结构展示出来。
阅读全文