解题思路:
我就是那个入门的,来个入门的C语言版。
参考代码:
#include
// 最大顶点数
#define MAX 50
#define True 1
#define False 0
void BFSTraverse(int arcs[][MAX], int n);
int main()
{
int i, j, n, arcs[MAX][MAX];
scanf("%d", &n);
for (i = 0; i
for (j = 0; j
scanf("%d", &arcs[i][j]);
}
}
BFSTraverse(arcs, n);
return 0;
}
void BFSTraverse(int arcs[][MAX], int n) {
int entered[MAX] = { False }; // 入队标记
int queue[MAX]; // 队列
int front = 0, rear = 0, i, t;
queue[rear++] = 0; // 首个顶点进队
entered[0] = True; // 已进队的标记
while (front != rear) {
t = queue[front++];
printf("%d ", t); // 输出出队的顶点
for (i = 0; i
// 所有相连的顶点进队并标记
if (arcs[t][i] == 1 && entered[i] == False) {
queue[rear++] = i;
entered[i] = True;
}
}
}
printf("\n");
}