图的遍历——深度优先遍历——邻接矩阵

来源:互联网 发布:如何解绑淘宝手机号码 编辑:程序博客网 时间:2024/06/13 23:08
/*图的遍历——深度优先遍历——邻接矩阵*/#include<stdio.h>#include<stdlib.h>#define MAXVEX 100      /*最大顶点数*/#define INFINITY 65535      /*用65535来代表∞*/typedef char VertexType;     /*顶点*/typedef int EdgeType;   /*权值*/typedef int Boolean;    /*Boolean是布尔类型,其值为TURE和FALSE*/Boolean visited[MAXVEX];    /*访问标志的数组*//*图的存储结构——邻接矩阵*/typedef struct {    VertexType vexs[MAXVEX];    /*顶点表*/    EdgeType arc[MAXVEX][MAXVEX];   /*邻接矩阵,可看作边表*/    int numVertexes,numEdge;    /*图中当前的顶点数和边数*/}MGraph;/*深度优先遍历(邻接矩阵)*/void DFS(MGraph G,int i){       int j;    visited[i]=true;    printf("%c",G.vexs[i]); /*打印顶点。也可以其他操作*/    for(j=0;j<G.numVertexes;j++)        if(G.arc[i][j]==1 && !visited[j])            DFS(G,j);   /*对未访问的邻接顶点递归调用*/}/*邻接矩阵的深度遍历操作*/void DFSTraverse(MGraph G){    int i;    for(i=0;i<G.numVertexes;i++)        visited[i]=false;   /*初始化所有的顶点状态都是未访问的状态*/    for(i=0;i<G.numVertexes;i++)        if(!visited[i]) /*对未访问过的顶点调用DFS,若是连通图,只会执行一次*/            DFS(G,i);}int main(){    return 0;}
0 0
原创粉丝点击