4.2 图的数据结构定义
4.2.1 写代码:定义一个顺序存储的图(邻接矩阵实现)
#define MaxVertexNum 100
typedef char VertexType;
typedef int EdgeType;
typedef struct{
VertexType Vex[MaxVertexNum];
EdgeType Edge[MaxVertexNum][MaxVertexNum];
int vexnum, arcnum;
}MGraph;
4.2.2 写代码:定义一个链式存储的图(邻接表实现)
typedef struct ArcNode{ //边表结点
int adjvex;
struct ArcNode *node;
int info; //边权值
}ArcNode;
typedef struct VNode{ //顶点表结点
VertexType data;
ArcNode *first;
}VNode,AdjList[MaxVertexNum];
typedef struct{ //邻接表
AdjList Vertices;
int vexnum,arcnum;
}ALGraph;
4.4 图的应用:最短路径
4.4.2 文字描述:用BFS算法求单源最短路径的过程
BFS算法求单源最短路径仅针对无权图
int d[MaxEdgeNum];
void BFS_MIN_Distance(Graph G, int u){
for(int i=0;i<G.vexnum;i++) d[i]=∞; //初始化路径长度
visited[u]=true; d[u]=0;
EnQueue(Q,u);
while(!QueueIsEmpty(Q)){
DeQueue(Q,u);
for(w=FirstNeighbor(G,u);w>=0;w=NextNeighbor(G,u,w)){
if(!visited[w]){
visited[w]=true;
d[w]=d[u]+1;
EnQueue(Q,w);
}
}
}
}