C++实现图的邻接矩阵、邻接表及深度广度优先遍历
#include <iostream> #include <vector> #include <queue> using namespace std; void printMatrix(vector<vector<int>>& matrix) { for (int i = 0; i < matrix.size(); i++) { for (int j = 0; j < matrix[i].size(); j++) { cout << matrix[i][j] << " "; } cout << endl; } } void printAdjList(vector<vector<int>>& adjList) { for (int i = 0; i < adjList.size(); i++) { cout << i << ": "; for (int j = 0; j < adjList[i].size(); j++) { cout << adjList[i][j] << " "; } cout << endl; } } void dfs(vector<vector<int>>& adjList, vector<bool>& visited, int node) { visited[node] = true; cout << node << " "; for (int i = 0; i < adjList[node].size(); i++) { if (!visited[adjList[node][i]]) { dfs(adjList, visited, adjList[node][i]); } } } void bfs(vector<vector<int>>& adjList, vector<bool>& visited) { queue<int> q; q.push(0); while (!q.empty()) { int node = q.front(); q.pop(); visited[node] = true; cout << node << " "; for (int i = 0; i < adjList[node].size(); i++) { if (!visited[adjList[node][i]]) { q.push(adjList[node][i]); visited[adjList[node][i]] = true; } } } } int main() { vector<vector<int>> matrix = {{0, 5, 0, 7, 0, 0}, {0, 0, 4, 0, 0, 0}, {8, 0, 0, 0, 0, 9}, {0, 0, 5, 0, 0, 6}, {0, 0, 0, 5, 0, 0}, {3, 0, 0, 0, 1, 0}}; printMatrix(matrix); cout << endl; vector<vector<int>> adjList(matrix.size()); for (int i = 0; i < matrix.size(); i++) { for (int j = 0; j < matrix[i].size(); j++) { if (matrix[i][j] != 0) { adjList[i].push_back(j); } } } printAdjList(adjList); cout << endl; vector<bool> visited(matrix.size(), false); cout << "dfs: "; dfs(adjList, visited, 0); cout << endl << endl; cout << "bfs: "; fill(visited.begin(), visited.end(), false); bfs(adjList, visited); return 0; } ######[AI写代码神器 | 1517点数解答 | 2024-11-25 16:18:26]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)382
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- JS 巧用 for in 循环逐行输出对象 key:value,还有关键判断!( | 208点数解答 | 2024-05-20 22:15:55)378
- C++实现顺序存储结构基本操作:初始化、插入、删除等全解析(GPT | 1743点数解答 | 2024-09-26 00:20:17)300
- Python知识大挑战:10 道题揭秘编程关键要点与答案(字节豆包 | 296点数解答 | 2024-10-20 19:31:00)245
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)59
- 去掉注释后的C++完全数查找代码(字节豆包 | 207点数解答 | 2026-03-14 20:06:22)20
- Java顺序表源码深度解析:从内存布局到扩容机制与Windows实战指南(阿里通义 | 2528点数解答 | 2026-04-01 10:06:46)28
- iOS开发:手把手教你完整实现代理模式,含声明与实现步骤!(阿里通义 | 268点数解答 | 2023-11-08 00:39:55)278
- JavaScript 开发:用 Animation 实现自定义动画的简易教程 (阿里通义 | 333点数解答 | 2023-11-09 01:50:07)269
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)499
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)388