邻接矩阵图的实现及深度优先遍历和广度优先遍历
时间: 2024-06-14 10:03:33 浏览: 137
c++实现图的邻接表深度优先遍历,广度优先遍历
C++邻接矩阵图的实现可以使用二维数组来表示图中各个节点之间的关系,其中数组的行和列分别代表图中的节点,数组中的元素表示节点之间的边的关系。如果节点i和节点j之间有边相连,则数组中第i行第j列的元素为1,否则为0。下面是一个简单的邻接矩阵图的实现示例:
```c++
const int MAXN = 100; // 最大节点数
int graph[MAXN][MAXN]; // 邻接矩阵
// 添加边
void addEdge(int u, int v) {
graph[u][v] = 1;
graph[v][u] = 1; // 如果是无向图,需要将两个方向都设置为1
}
// 深度优先遍历
void dfs(int u, bool visited[]) {
visited[u] = true;
cout << u << " ";
for (int v = 0; v < MAXN; v++) {
if (graph[u][v] && !visited[v]) {
dfs(v, visited);
}
}
}
// 广度优先遍历
void bfs(int u, bool visited[]) {
queue<int> q;
q.push(u);
visited[u] = true;
while (!q.empty()) {
int v = q.front();
q.pop();
cout << v << " ";
for (int i = 0; i < MAXN; i++) {
if (graph[v][i] && !visited[i]) {
visited[i] = true;
q.push(i);
}
}
}
}
```
其中,dfs函数是深度优先遍历的实现,visited数组用于记录每个节点是否已经被访问过;bfs函数是广度优先遍历的实现,使用了STL中的队列来实现。
阅读全文