数据结构–图的广度优先遍历
邻接矩阵:
#include <stdio.h>
#define MAXVEX 20 //最大顶点数
#define FINITY 100 //代表 ∞
typedef char VertexType; //顶点类型
//邻接矩阵存储结构
typedef struct{
VertexType vexs[MAXVEX]; //顶点数组
int arc[MAXVEX][MAXVEX]; //边的权值
int numVertexes,numEdges; //实际顶点数和边数
}MGraph;
//循环队列
typedef struct{
int Queue[MAXVEX];
int first;
int rear;
}SqQueue;
//循环队列初始化
void InitQueue(SqQueue *Q){
Q->first=0;
Q->rear=0;
}
//循环队列是否为空
int QueueEmpty(SqQueue Q){
return Q.first==Q.rear;
}
//入队
void EnQueue(SqQueue *Q,int e){
if((Q->rear+1)%MAXVEX==Q->first)
return;
Q->Queue[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXVEX;
}
//出队
void DeQueue(SqQueue *Q,int *e){
if(Q->rear==Q->first)
return;
*e=Q->Queue[Q->first];
Q->first=(Q->first+1)%MAXVEX;
}
//创建邻接矩阵
void Create(MGraph *G){
int i,j;
printf("输入顶点数和边数:\n&#