关于#数据结构#构建朋友圈的问题,如何解决?

img

有8个人组成一个朋友圈,其中各人对朋友有一个初始评分,分值越高说明该朋友在其心目中越重要。初始评分表如下(每行代表各人对其他人的评分):见图片

经过一段时间,各人对其中部分朋友的评分发生了改变。
赵:周4----周1,郑0---郑3
孙:李1---李5
吴:孙2---孙5,王6---王1
郑:李1---李3,吴2---吴6
王:吴3---吴1
===========================================================================
用所学数据结构实现如上朋友圈;
(1),用初始表初始化朋友圈;
(2),用所给数据更新朋友圈;
(3),当从键盘输入某人的汉语拼音时,按照其朋友的重要性(数值从小到大)打印其朋友圈(可以是汉语,也可以是汉语拼音)。

这道题可以使用邻接矩阵来实现朋友圈,并使用字典来将人名与邻接矩阵中的下标对应起来。下面是Python的实现代码:

python
Copy code

# 初始化邻接矩阵
graph = [
    [0, 5, 3, 4, 0, 0, 0, 0],
    [5, 0, 2, 0, 0, 0, 0, 4],
    [3, 2, 0, 0, 4, 0, 0, 0],
    [4, 0, 0, 0, 0, 0, 0, 2],
    [0, 0, 4, 0, 0, 3, 0, 0],
    [0, 0, 0, 0, 3, 0, 6, 0],
    [0, 0, 0, 0, 0, 6, 0, 1],
    [0, 4, 0, 2, 0, 0, 1, 0]
]

# 人名与邻接矩阵下标的映射字典
name_dict = {
    "赵": 0,
    "钱": 1,
    "孙": 2,
    "李": 3,
    "周": 4,
    "吴": 5,
    "郑": 6,
    "王": 7
}

# 更新朋友圈
graph[name_dict["赵"]][name_dict["周"]] = 1
graph[name_dict["赵"]][name_dict["郑"]] = 3
graph[name_dict["孙"]][name_dict["李"]] = 5
graph[name_dict["吴"]][name_dict["孙"]] = 5
graph[name_dict["吴"]][name_dict["王"]] = 1
graph[name_dict["郑"]][name_dict["李"]] = 3
graph[name_dict["郑"]][name_dict["吴"]] = 6

# 打印某人的朋友圈
person = input("请输入某人的汉语拼音:")
if person not in name_dict:
    print("无此人")
else:
    index = name_dict[person]
    friends = []
    for i, score in enumerate(graph[index]):
        if score > 0:
            friends.append((score, i))
    friends.sort()
    print(person + "的朋友圈:")
    for score, i in friends:
        print(list(name_dict.keys())[list(name_dict.values()).index(i)], end=" ")
        print("(" + str(score) + ")", end=" ")
    print()

代码中,我们首先使用一个8x8的邻接矩阵来表示朋友圈,其中每个元素表示两个人之间的关系,0表示不认识,大于0的整数表示关系的紧密程度。然后,我们使用一个字典将人名与邻接矩阵中的下标对应起来。接着,我们根据题目给出的数据更新邻接矩阵。最后输入人名获取数据

定义一个一维字符串数组,表示所有人的姓
定义一个二维数组,表示所有人的评分