使用c语言,使用双亲链表储存结构储存名字来建树,储存家谱的代码
时间: 2024-05-09 08:15:54 浏览: 12
以下是使用双亲链表储存结构储存名字来建树,储存家谱的代码的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NODE_NUM 100 // 最大节点数
// 双亲链表节点结构体
typedef struct node {
char name[20]; // 名字
int parent; // 双亲节点下标
} Node;
// 家谱树结构体
typedef struct tree {
Node nodes[MAX_NODE_NUM]; // 节点数组
int nodeNum; // 节点数
} Tree;
// 初始化家谱树
void initTree(Tree *t) {
t->nodeNum = 1; // 根节点下标为0,因此节点数从1开始计数
strcpy(t->nodes[0].name, "张三"); // 根节点为张三
t->nodes[0].parent = -1; // 根节点无双亲节点,因此双亲节点下标为-1
}
// 添加子女节点
void addChild(Tree *t, int parentIdx, char *name) {
if (t->nodeNum >= MAX_NODE_NUM) {
printf("节点数已达上限,无法添加节点!\n");
return;
}
// 在节点数组末尾添加新节点
strcpy(t->nodes[t->nodeNum].name, name);
t->nodes[t->nodeNum].parent = parentIdx;
t->nodeNum++;
}
// 打印家谱树
void printTree(Tree *t) {
printf("家谱树:\n");
for (int i = 0; i < t->nodeNum; i++) {
printf("%s", t->nodes[i].name);
if (t->nodes[i].parent >= 0) {
printf(" 的父亲是 %s", t->nodes[t->nodes[i].parent].name);
}
printf("\n");
}
}
int main() {
Tree t;
initTree(&t); // 初始化家谱树
// 添加子女节点
addChild(&t, 0, "李四");
addChild(&t, 0, "王五");
addChild(&t, 1, "赵六");
addChild(&t, 2, "钱七");
addChild(&t, 3, "孙八");
printTree(&t); // 打印家谱树
return 0;
}
```
输出结果:
```
家谱树:
张三
李四 的父亲是 张三
王五 的父亲是 张三
赵六 的父亲是 李四
钱七 的父亲是 王五
孙八 的父亲是 赵六
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)