用c语言代码建立三国人物关系图谱
时间: 2023-10-11 09:08:27 浏览: 90
《三国志》源代码-C语言
好的,下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_RELATIONS 50
typedef struct {
char name[MAX_NAME_LEN];
int id;
} Person;
typedef struct {
int from_id;
int to_id;
} Relation;
int main() {
Person persons[MAX_RELATIONS * 2];
int num_persons = 0;
Relation relations[MAX_RELATIONS];
int num_relations = 0;
// 添加人物
strcpy(persons[num_persons].name, "刘备");
persons[num_persons].id = num_persons;
num_persons++;
strcpy(persons[num_persons].name, "关羽");
persons[num_persons].id = num_persons;
num_persons++;
strcpy(persons[num_persons].name, "张飞");
persons[num_persons].id = num_persons;
num_persons++;
strcpy(persons[num_persons].name, "诸葛亮");
persons[num_persons].id = num_persons;
num_persons++;
strcpy(persons[num_persons].name, "赵云");
persons[num_persons].id = num_persons;
num_persons++;
// 添加人物关系
relations[num_relations].from_id = 0; // 刘备
relations[num_relations].to_id = 1; // 关羽
num_relations++;
relations[num_relations].from_id = 0; // 刘备
relations[num_relations].to_id = 2; // 张飞
num_relations++;
relations[num_relations].from_id = 0; // 刘备
relations[num_relations].to_id = 3; // 诸葛亮
num_relations++;
relations[num_relations].from_id = 3; // 诸葛亮
relations[num_relations].to_id = 4; // 赵云
num_relations++;
// 打印人物关系图谱
printf("三国人物关系图谱:\n");
for (int i = 0; i < num_persons; i++) {
printf("%s: ", persons[i].name);
for (int j = 0; j < num_relations; j++) {
if (relations[j].from_id == i) {
printf("%s ", persons[relations[j].to_id].name);
} else if (relations[j].to_id == i) {
printf("与%s ", persons[relations[j].from_id].name);
}
}
printf("\n");
}
return 0;
}
```
这里我们定义了两个结构体:`Person` 用来存储人物的姓名和 ID,`Relation` 用来存储人物之间的关系(使用 ID 来表示人物)。然后我们添加了一些人物和人物之间的关系,最后打印出人物关系图谱。
阅读全文