编写基于邻接矩阵存储的无向图的深度优先遍历的一个程序
时间: 2024-02-21 09:57:24 浏览: 75
好的,以下是基于邻接矩阵存储的无向图的深度优先遍历的一个程序:
```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数组记录了每个顶点是否已被访问过。在主函数中,先读入邻接矩阵表示的无向图,然后对每个未被访问过的顶点进行深度优先遍历。
阅读全文