C++笔记-基于邻接矩阵的BFS(宽度优先遍历)
生活随笔
收集整理的這篇文章主要介紹了
C++笔记-基于邻接矩阵的BFS(宽度优先遍历)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鄰接表是是用一個二維鏈表,表示頂點和頂點相鄰的節點。
而鄰接矩陣是,他的行,代表的是頂點,列也代表的頂點,如下:
第0行:這是第0個頂點,他可以去第1個和第2個頂點;
第1行:這是第1個頂點,他可以去第4個頂點;
第2行:這是第2個頂點,他可以去第0個和第2和第3個頂點;
第3行:這是第3個頂點,他可以去第0個和第4個頂點;
第4行,這是第4個頂點,他一個頂點也不能走。
思路BFS都一樣,先選一個頂點,然后看他可以訪問哪個頂點,然后依次訪問:
運行截圖:先訪問0這個頂點,在1,2,4,3
代碼是這樣的:
#include <iostream> #include <list>using namespace std;int am[5][5] = {0, 1, 1, 0, 0,0, 0, 0, 0, 1,1, 0, 1, 1, 0,1, 0, 0, 0, 1,0, 0, 0, 0, 0 };//對第幾個頂點開始bfs,頂點從0開始 void bfs(int v) {bool visited[5] = { false };list<int> queue;queue.push_back(v);while (!queue.empty()) {v = queue.front();visited[v] = true;cout << v << " ";queue.pop_front();//將從v頂點可以走到的頂點,都入隊列for (int i = 0; i < 5; i++) {if (am[v][i] != 0 && visited[i] != true) {queue.push_back(i);}}}}void main() {bfs(0);getchar(); }bfs(0)代表從第0個頂點開始。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的C++笔记-基于邻接矩阵的BFS(宽度优先遍历)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++笔记-函数参数使用void *的野
- 下一篇: C++工作笔记-hiredis中关于ER