编辑代码

#include <stdio.h>
#define MaxV 100 //顶点数目的最大值
#define INFINITY 最大的int值 //宏定义常量"无穷"
typedef char VertexType;//顶点数据类型
typedef int EdgeType;//带权图中边上权值的数据类型
//邻接矩阵法存储带权图
typedef struct {
    VertexType Vex[MaxV];//顶点
    EdgeType Edge[MaxV][MaxV];//边的权
    int vexnum,arcnum;//图的当前顶点数和弧数
}MGraph;
//邻接表法(顺序加链式存储)
//边/弧
typedef struct ArcNode{
    int adjvex; //边/弧指向那个结点
    struct ArcNode *next;//指向下一条弧的指针
    //InfoType info ;//边权值
}ArcNode;
//顶点
tepedef struct VNode{
    VertexType data;//顶点信息
    ArcNode *first;//第一条边/弧
}VNode,AdjList[MaxV];
//用邻接表存储的图
typedef struct{
    AdjList vertices;
    int vexnum,arcnnum;
}ALGraph;
//广度优先遍历
bool visited[MaxV];
void BFSTraverse(MGraph G){
    for(i = 0;i<G.vernum;++i){
        visited[i]=FALSE;
    }
    InitQueue(Q);
    for(i = 0;i<G.vernum;++i){
        if(!visited[i]){
            BFS(G,i);
        }
    }
}
void BFS(Graph G,int v){
    visit("%c",v);
    visited[v] = TRUE;
    Enqueue(Q,v);
    while(!isEmpty(Q)){
        DeQueue(Q,v);
        for(w = FrstNeighbor(G,v);w>=0;w=NextNeighbor(G,v)){
            //检测v的所有邻接点
            if(!visited[w]){
                visit(w);
                visited[w]=TRUE;
                EnQueue(Q,w);
            }
        }
    }
}
int main () {
    //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
	printf("Hello world!     - c.jsrun.net.");
	return 0;
}