C++笔记-基于邻接表的BFS(宽度优先遍历)
生活随笔
收集整理的這篇文章主要介紹了
C++笔记-基于邻接表的BFS(宽度优先遍历)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這里是基于鄰接表的,有向的,具體代碼如下:
#include <iostream> #include <list>using namespace std;class Graph {int V;list<int> *adj; public:Graph(int V);void addEdge(int v, int w);void BFS(int s); };Graph::Graph(int V) {this->V = V;adj = new list<int>[V]; }void Graph::addEdge(int v, int w) {adj[v].push_back(w); }void Graph::BFS(int s) {bool *visited = new bool[V];for (int i = 0; i < V; i++)visited[i] = false;list<int> queue;visited[s] = true;queue.push_back(s);list<int>::iterator i;while (!queue.empty()){s = queue.front();cout << s << " ";queue.pop_front();for (i = adj[s].begin(); i != adj[s].end(); ++i){if (!visited[*i]){visited[*i] = true;queue.push_back(*i);}}} }int main() {Graph g(4);g.addEdge(0, 1);g.addEdge(1, 2);g.addEdge(0, 3);cout << "Following is Breadth First Traversal " << endl;g.BFS(0);getchar();return 0; }程序運行截圖如下:
這里的g.BFS(0);代表,從0這個頂點開始。
鄰接表是這樣的:
總結(jié)
以上是生活随笔為你收集整理的C++笔记-基于邻接表的BFS(宽度优先遍历)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot文档阅读比较-@S
- 下一篇: Java笔记-Spring Boot W