给定一个社交网络图3 5 3 2 3 6 3 7 3 11 3 12 11 3 11 2 11 1 4 5 4 2 4 8 4 6 4 14 4 7 4 15 4 12 5 1 5 8 5 10 5 7 5 15 5 14 2 1 2 7 2 6 2 8 2 11 2 13 1 11 1 6 1 14 1 8 1 9 1 15 6 3 6 4 6 2 6 1 7 3 7 4 7 5 7 2 8 4 8 5 8 2 8 1 10 5 9 1 12 3 12 4 14 4 14 5 14 1 15 4 15 5 15 1 13 2,存储在文件socialnetwork.txt中,比如, “3 12”表示用户3关注了用户12。 输入任意用户,要求: 1)求“该用户关注的其他用户”的集合,并输出; 2)求该“用户关注的其他用户” 所关注的其他用户集合,即该用户在社交网络上通过两步能够关注到的用户集合,并输出。运用C语言
时间: 2023-06-19 17:10:16 浏览: 36
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_USERS 100 // 最大用户数
int socialnetwork[MAX_USERS][MAX_USERS]; // 社交网络图
int n; // 用户数
void readSocialNetwork(char filename[]) {
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
printf("读取文件出错!\n");
exit(1);
}
int u, v;
while (fscanf(fp, "%d%d", &u, &v) == 2) {
socialnetwork[u-1][v-1] = 1;
}
fclose(fp);
}
void printFollowers(int user) {
printf("用户%d关注的其他用户:", user);
for (int i = 0; i < n; i++) {
if (socialnetwork[user-1][i]) {
printf("%d ", i+1);
}
}
printf("\n");
}
void printFollowersOfFollowers(int user) {
int followers[MAX_USERS] = {0}; // 存储用户关注的其他用户
int fof[MAX_USERS] = {0}; // 存储该用户关注的其他用户所关注的其他用户
int fof_count = 0; // 该用户通过两步能够关注到的用户数
// 获取用户关注的其他用户
for (int i = 0; i < n; i++) {
if (socialnetwork[user-1][i]) {
followers[i] = 1;
}
}
// 获取该用户关注的其他用户所关注的其他用户
for (int i = 0; i < n; i++) {
if (followers[i]) {
for (int j = 0; j < n; j++) {
if (socialnetwork[i][j] && !followers[j] && j != user-1) {
fof[j] = 1;
fof_count++;
}
}
}
}
printf("该用户通过两步能够关注到的用户:");
for (int i = 0; i < n; i++) {
if (fof[i]) {
printf("%d ", i+1);
}
}
printf("\n共%d个用户\n", fof_count);
}
int main() {
char filename[] = "socialnetwork.txt";
readSocialNetwork(filename);
n = MAX_USERS;
int user;
printf("请输入一个用户编号:");
scanf("%d", &user);
printFollowers(user);
printFollowersOfFollowers(user);
return 0;
}
```
以上代码先读取社交网络图文件,然后实现了两个函数,分别用于输出某个用户关注的其他用户集合和该用户通过两步能够关注到的用户集合。在主函数中,先输入要查询的用户编号,然后调用这两个函数输出结果。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)
![](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)