图的深度优先遍历算法(利用邻接矩阵))

时间:2025-07-08

图的深度优先遍历算法

#define N 9 //图的顶点数

char DOT[N]={'A','B','C','D','E','F','G','H','I'};//存放顶点信息的数组
char OUT[N+1]; //存放被访问顶点信息顺序的数组,OUT[0]保存已访问顶点总数
char visited[N]; //存放顶点被访问标志

//邻接矩阵:
int GRA[N][N] ={{0,1,0,0,0,0,0,1,0},
{1,0,1,0,0,0,0,0,1},
{0,1,0,1,0,1,0,0,0},
{0,0,1,0,1,0,0,0,0},
{0,0,0,1,0,1,1,0,0},
{0,0,1,0,1,0,1,0,1},
{0,0,0,0,1,1,0,1,0},
{1,0,0,0,0,0,1,0,1},
{0,1,0,0,0,1,0,1,0}};

void DFS (int i) reentrant //从顶点i出发,深度优先搜索遍历连通图
{
int j;
OUT [++OUT[0]] = DOT[i];//先访问该顶点(输出该顶点信息)
visited[i] = 1 ; //作已访问标记
for (j=0;j<N;j++) //从顶点i出发,扫描所有相邻顶点
if ( GRA[i][j] == 1 && !visited[j] ) //如果未访问过
DFS (j) ; //从顶点j出发,按深度优先继续搜索
}

//出发点序号为0时的遍历顺序:ABCDEFGHI
//出发点序号为1时的遍历顺序:BAHGEDCFI
//出发点序号为2时的遍历顺序:CBAHGEDFI
//出发点序号为3时的遍历顺序:DCBAHGEFI
//出发点序号为4时的遍历顺序:EDCBAHGFI
//出发点序号为5时的遍历顺序:FCBAHGEDI
//出发点序号为6时的遍历顺序:GEDBCAHIF
//出发点序号为7时的遍历顺序:HABCDEFGI
//出发点序号为8时的遍历顺序:IBAHGEDCF

main ( )
{
int i,j;
for (i=0;i<N;i++) {
OUT[
0]=0; //初始化已访问顶点数
for (j=0;j<N;j++) visited[j]=0;//初始化访问标志
DFS (i) ; //从序号为i的顶点出发进行深度优先遍历
}
while (1) ; //在这一行设置断点,中止程序运行,以便观察程序运行的结果
}

图的深度优先遍历算法(利用邻接矩阵)).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219