程序填空题:基于邻接矩阵表示的广度优先遍历
基于邻接矩阵表示的广度优先遍历。
```c++
#include
#include
#define MVNum 100
int visited[MVNum];
typedef struct{
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum,arcnum;
}Graph;
void CreateUDN(Graph &G);//实现细节隐藏
void BFS(Graph G, int v){
char Q[MVNum];
int f=0,r=0;
int u,w;
printf("%c ",G.vexs[v]); visited[v] = 1;
Q[r++]=v;
while(@@[f!=r](2)){
u=@@[Q[f++]](2);
for(w = 0; w < G.vexnum; w++){
if(@@[(G.arcs[u][w] != 0)&& (!visited[w])](2))
{
printf("%c ",G.vexs[w]);
visited[w] = 1;
@@[Q[r++]](2)=w;
}
}
}
}
void BFSTraverse(Graph G){
int v;
for(v = 0; v < G.vexnum; ++v) visited[v] = 0;
for(v = 0; v < G.vexnum; ++v)
if(!visited[v]) BFS(G, v);
}
int main(){
Graph G;
CreateUDN(G);
BFSTraverse(G);
return 0;
}
```
答案:
第1空:f!=r
第2空:Q[f++]
第3空:(G.arcs[u][w] != 0)&& (!visited[w])
第4空:Q[r++]
```c++
#include
#include
#define MVNum 100
int visited[MVNum];
typedef struct{
char vexs[MVNum];
int arcs[MVNum][MVNum];
int vexnum,arcnum;
}Graph;
void CreateUDN(Graph &G);//实现细节隐藏
void BFS(Graph G, int v){
char Q[MVNum];
int f=0,r=0;
int u,w;
printf("%c ",G.vexs[v]); visited[v] = 1;
Q[r++]=v;
while(@@[f!=r](2)){
u=@@[Q[f++]](2);
for(w = 0; w < G.vexnum; w++){
if(@@[(G.arcs[u][w] != 0)&& (!visited[w])](2))
{
printf("%c ",G.vexs[w]);
visited[w] = 1;
@@[Q[r++]](2)=w;
}
}
}
}
void BFSTraverse(Graph G){
int v;
for(v = 0; v < G.vexnum; ++v) visited[v] = 0;
for(v = 0; v < G.vexnum; ++v)
if(!visited[v]) BFS(G, v);
}
int main(){
Graph G;
CreateUDN(G);
BFSTraverse(G);
return 0;
}
```
答案:
第1空:f!=r
第2空:Q[f++]
第3空:(G.arcs[u][w] != 0)&& (!visited[w])
第4空:Q[r++]