logo资料库

分别以邻接矩阵和邻接表作为图的.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
分别以邻接矩阵和邻接表作为图的存储结构,给出连通图的深度优先 遍历的递归算法 算法思想: (1)访问出发点 vi,并将其标记为已访问过。 (2)遍历 vi 的的每一个邻接点 vj,若 vi 未曾访问过,则以 vi 为新的出发点继续进行深度 优先遍历。 算法实现: Boolean visited[max]; void DFS(Graph G, int v) { // 算法7.5从第v个顶点出发递归地深度优先遍历图G // 访问标志数 int w; visited[v] = TRUE; printf("%d ",v); for (w=FirstAdjVex(G, v); w>=0; w=NextAdjVex(G, v, w)) // 访问第v个顶点 if (!visited[w]) // 对v的尚未访问的邻接顶点w递归调用DFS DFS(G, w); } /*****************************************************/ /*以邻接矩阵作为存储结构*/ DFS1(MGraph G,int i) {int j; visited[i]=1; printf("%c",G.vexs[i]); for(j=1;j<=G.vexnum;j++) if(!visited[j]&&G.arcs[i][j]==1) DFS1(G,j); } /*以邻接表作为存储结构*/ DFS2(ALGraph G,int i) {int j; ArcPtr p; visited[i]=1; printf("%c",G.vertices[i].data); for(p=G.vertices[i].firstarc;p!=NULL;p=p->nextarc) {j=p->adjvex; if(!visited[j]) DFS2(j); } }
分享到:
收藏