C語言資料結構_圖的遍歷-廣度優先搜尋
阿新 • • 發佈:2022-03-08
//廣度優先搜尋一個連通圖 void BFS(VNode G[], int v){ int w; visit(v); //訪問頂點v visit[v] = 1; //將頂點v對應的訪問標記置1 EnQueue(q, v); //頂點v入佇列 while(!emptyQ(q)){ DeQueue(&q, &v); //出佇列,元素由v返回 w = FirstAdj(G, v); //找到頂點v的第一個鄰接點,如果無鄰接點,返回-1 while( w != -1){ if(visited[w] == 0){ visit(w); EnQueue(q, w); //頂點w入佇列 visited[w] = 1; } w = NextAdj(G, v); //找到頂點v的下一個鄰接點,如果無鄰接點,返回-1 } } } //對圖G=(V,E)進行廣度優先搜尋的主演算法 void Travel_BFS(VNode G[], int visited[], int n){ int i; for(i=0; i<n; i++) visited[i] = 0; //將標記陣列初始化為0 for(i=0; i<n; i++) if(visited[i] == 0) //若有頂點未被訪問,從該頂點開始繼續廣度優先搜尋 BFS(G, i); }