日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图的遍历(C语言,邻接表存储的图 - DFS,邻接矩阵存储的图 - BFS)

發布時間:2023/12/4 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图的遍历(C语言,邻接表存储的图 - DFS,邻接矩阵存储的图 - BFS) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鄰接表存儲的圖 - DFS

/* 鄰接表存儲的圖 - DFS */void Visit( Vertex V ) {printf("正在訪問頂點%d\n", V); }/* Visited[]為全局變量,已經初始化為false */ void DFS( LGraph Graph, Vertex V, void (*Visit)(Vertex) ) { /* 以V為出發點對鄰接表存儲的圖Graph進行DFS搜索 */PtrToAdjVNode W;Visit( V ); /* 訪問第V個頂點 */Visited[V] = true; /* 標記V已訪問 */for( W=Graph->G[V].FirstEdge; W; W=W->Next ) /* 對V的每個鄰接點W->AdjV */if ( !Visited[W->AdjV] ) /* 若W->AdjV未被訪問 */DFS( Graph, W->AdjV, Visit ); /* 則遞歸訪問之 */ }

鄰接矩陣存儲的圖 - BFS:

/* 鄰接矩陣存儲的圖 - BFS *//* IsEdge(Graph, V, W)檢查<V, W>是否圖Graph中的一條邊,即W是否V的鄰接點。 */ /* 此函數根據圖的不同類型要做不同的實現,關鍵取決于對不存在的邊的表示方法。*/ /* 例如對有權圖, 如果不存在的邊被初始化為INFINITY, 則函數實現如下: */ bool IsEdge( MGraph Graph, Vertex V, Vertex W ) {return Graph->G[V][W]<INFINITY ? true : false; }/* Visited[]為全局變量,已經初始化為false */ void BFS ( MGraph Graph, Vertex S, void (*Visit)(Vertex) ) { /* 以S為出發點對鄰接矩陣存儲的圖Graph進行BFS搜索 */Queue Q; Vertex V, W;Q = CreateQueue( MaxSize ); /* 創建空隊列, MaxSize為外部定義的常數 *//* 訪問頂點S:此處可根據具體訪問需要改寫 */Visit( S );Visited[S] = true; /* 標記S已訪問 */AddQ(Q, S); /* S入隊列 */while ( !IsEmpty(Q) ) {V = DeleteQ(Q); /* 彈出V */for( W=0; W<Graph->Nv; W++ ) /* 對圖中的每個頂點W *//* 若W是V的鄰接點并且未訪問過 */if ( !Visited[W] && IsEdge(Graph, V, W) ) {/* 訪問頂點W */Visit( W );Visited[W] = true; /* 標記W已訪問 */AddQ(Q, W); /* W入隊列 */}} /* while結束*/ }

總結

以上是生活随笔為你收集整理的图的遍历(C语言,邻接表存储的图 - DFS,邻接矩阵存储的图 - BFS)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。