编写基于邻接矩阵存储的无向图的深度优先遍历的一个程序
时间: 2024-02-21 08:57:24 浏览: 74
建立图的邻接矩阵或邻接表存储并在此基础上实现图的深度优先遍历和广度优先遍历.doc
5星 · 资源好评率100%
好的,以下是基于邻接矩阵存储的无向图的深度优先遍历的一个程序:
```c++
#include <iostream>
#include <stack>
using namespace std;
const int MAX = 100; // 最大顶点数
int visited[MAX] = {0}; // 记录顶点是否已访问,初始为0
void DFS(int graph[][MAX], int vertex, int size)
{
visited[vertex] = 1; // 标记该顶点已被访问
cout << vertex << " "; // 输出该顶点
for (int i = 0; i < size; i++) {
if (graph[vertex][i] == 1 && visited[i] == 0) { // 未被访问过的相邻顶点
DFS(graph, i, size); // 递归访问相邻顶点
}
}
}
int main()
{
int size; // 顶点数
int graph[MAX][MAX]; // 邻接矩阵存储图
cout << "请输入顶点数:";
cin >> size;
cout << "请输入邻接矩阵:\n";
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cin >> graph[i][j];
}
}
cout << "深度优先遍历结果为:\n";
for (int i = 0; i < size; i++) {
if (visited[i] == 0) { // 未被访问过的顶点
DFS(graph, i, size); // 从该顶点开始深度优先遍历
}
}
cout << endl;
return 0;
}
```
该程序中,DFS函数实现了深度优先遍历,visited数组记录了每个顶点是否已被访问过。在主函数中,先读入邻接矩阵表示的无向图,然后对每个未被访问过的顶点进行深度优先遍历。
阅读全文