文章
63
粉丝
0
获赞
0
访问
13.4k
(1)建立两个数组in和out,分别用于存储顶点的入度和出度。其中in[i]表示i顶点的入度,out[i]表示i顶点的出度。我们分别遍历Edge邻接矩阵的行和列,来求出in和out数组。如果in[i] < out[i],则代表i顶点为K顶点,以此类推,返回结果。
(2)
int printVertices(MGraph G) {
// 步骤1:建立两个数组in和out,并初始化为0
// 分别用于存储每个顶点的入度和出度
int in[MAXV];
int out[MAXV];
int k_vertex_count = 0; // 用于统计K顶点的数量
int i, j;
// 使用循环进行初始化
for (i = 0; i < G.numVertices; i++) {
in[i] = 0;
out[i] = 0;
}
// 步骤2:遍历邻接矩阵,计算每个顶点的入度和出度
for (i = 0; i < G.numVertices; i++) {
for (j = 0; j < G.numVertices; j++) {
// 如果存在从顶点i到顶点j的边
if (G.Edge[i][j] == 1) {
out[i]++; // 顶点i的出度加1
in[j]++; // 顶点j的入度加1
}
}
}
// 步骤3:遍历所有顶点,找出符合条件的K顶点并打印
printf("入度小于出度的顶点 (K顶点) 有:\n");
for (i = 0; i < G.numVertices; i++) {
if (in[i] < out[i]) {
k_vertex_count++; // 计数器加1
}
}
// 步骤4:返回K顶点的总数
retu...
登录后发布评论
暂无评论,来抢沙发