在本题中,读入一个无向图的邻接矩阵(即数组表示),建立无向图并按照以上描述中的算法遍历所有顶点,输出遍历顶点的顺序。 Input 输入的第一行包含一个正整数n,表示图中共有n个顶点。其中n不超过50。 以后的n行中每行有n个用空格隔开的整数0或1,对于第i行的第j个0或1,1表示第i个顶点和第j个顶点有直接连接,0表示没有直接连接。当i和j相等的时候,保证对应的整数为0。 输入保证邻接矩阵为对称矩阵,即输入的图一定是无向图。 Output 只有一行,包含n个整数,表示按照题目描述中的深度优先遍历算法遍历整个图的访问顶点顺序。每个整数后输出一个空格,并请注意行尾输出换行。 Sample Input 4 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0Sample Output 0 1 3 2 上述问题用C语言和数据结构如何写代码
时间: 2024-01-24 14:19:51 浏览: 100
数据结构(visualc++)用邻接矩阵表示给定无向图并进行深度遍历借鉴.pdf
以下是深度优先遍历的伪代码:
void dfs(int v) {
visited[v] = true; // 标记当前顶点已访问
printf("%d ", v); // 输出当前顶点
for (int i = 0; i < n; i++) {
if (adjMatrix[v][i] && !visited[i]) { // 如果当前顶点与 i 相邻且 i 未被访问过
dfs(i); // 递归访问 i
}
}
}
其中,visited 数组记录顶点是否被访问过,adjMatrix 是邻接矩阵,n 是顶点个数。
完整的C语言代码如下:
阅读全文