#define MAX 50
typedef char VertexType;
typedef int EdgeType;
typedef enum{FALSE,TRUE} VisitFlag;
VisitFlag visited[MAX];
typedef struct
{
VertexType vexs[MAX];
EdgeType edges[MAX][MAX];
int vexnum,arcnum;
}AdjMatrix;
void BFSTraverse_Matrix(AdjMatrix G)
{
int k;
for(k=1;k<=G.vexnum;k++)
visited[k]=FALSE;
for(k=1;k<=G.vexnum;k++)
{
if(FALSE==visited[k])
BFS_Matrix(G,k);
}
}
void BFS_Matrix(AdjMatrix G,int k)
{
int j,t;
printf("Visit vertex:%c \n",G.vexs[k]);
visited[k]=TRUE;
for(j=1;j<=G.vexnum;j++)
{
if(1==G.edges[k][j]&&FALSE==visited[j])
{
printf("Visit vertex: %c \n",G.vexs[j]);
visited[j]=TRUE;
EnQueue_sq(&Q,j);
}
}
while(!QueueEmpty_sq(Q))
{
DeQueue_sq(&Q,&t);
for(j=1;j<=G.vexnum;j++)
{
if(1==G.edges[t][j]&&FALSE==visited[j])
{
printf("Visit vertex: %c \n",G.vexs[j]);
visited[j]=TRUE;
EnQueue_sq(&Q,j);
}
}
}
}
基于邻接矩阵的广度优先算法
最新推荐文章于 2023-03-23 18:51:12 发布