数据结构邻接矩阵的广度优先遍历,采用邻接矩阵存储的图的深度优先遍历
数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历- python - ITeye技术网站
数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历
博客分类:c语言数据结构J#以下是作业,用它用实现用邻接矩阵的方式来进行广度优先和深度优先的遍历。
代码比较简单,用了两个小时来写出来。
/**用邻接矩阵的方式来储存图,用广度优先方式进行遍历**/
C代码# include stdio。h # define max _ matrix 10 int visited[max _ matrix],matrix[max _ matrix][max _ matrix];int nint board _ traverse();intmain(){inti,j;scanf(%d ,if(n 1){ printf( n必须是1 \ n );退出(0);} if(n max _ matrix){ printf( nmustbe % d \ n ,max _ matrix);退出(0);} for(I=0;I I){ visited[I]=0;for(j=0;j j)矩阵[I][j]=0;}while(scanf(%d%d ,I,j){ matrix[I-1][j-1]=1;} for(I=0;I I){ for(j=0;j j )printf(%d ,matrix[I][j]);printf( \ n );} printf( 1 );board _ traverse(0);}intboard_traverse(){inttemp,I,j,ma_j,ma _ I;for(ma _ I=0;ma _ I ma _ I)for(ma _ j=ma _ I;ma _ j ma _ j)if(matrix[ma _ I][ma _ j]visited[ma _ j]==0){ printf( % d ,ma _ j 1);visited[ma _ j]=1;}}#include stdio.h
#定义max_matrix 10
(同Internationalorganizations)国际组织访问了[max_matrix],matrix[max _ matrix][max _ matrix];
int n;
int board _ traverse();
int main()
int i,j;
scanf(%d ,
如果(北^ 1)
printf(n必须是1 \ n’);
退出(0);
if (n max_matrix)
printf(n必须是%d\n ,max _ matrix);
退出(0);
for(I=0;我我)
visited[I]=0;
for(j=0;j j)
矩阵[I][j]=0;
while (scanf(%d %d ,I,j)==2)
矩阵[I-1][j-1]=1;
for(I=0;我我)
for(j=0;j j)
printf(%d ,matrix[I][j]);
printf( \ n );
printf( 1 );
board _ traverse(0);
int board_traverse()
int temp,I,j,ma_j,ma _ I;
for(ma _ I=0;妈妈我妈妈我)
for(ma _ j=ma _ I;ma_j ma_j)
if(矩阵[ma_i][ma_j]访问了[ma_j]==0)
printf(%d ,ma _ j 1);
visited[ma _ j]=1;
}/**用邻接矩阵的方式来储存图,用深度优先方式进行遍历**/
C代码# include stdio。h # define max _ matrix 10 int visited[max _ matrix],matrix[max _ matrix][max _ matrix];int nint deep _ traverse(int);intmain(){inti,j;scanf(%d ,if(n 1){ printf( n必须是1 \ n );退出(0);} if(n max _ matrix){ printf( nmustbe % d \ n ,max _ matrix);退出(0);} for(I=0;I I){ visited[I]=0;for(j=0;j j)矩阵[I][j]=0;}while(scanf(%d%d ,I,j){ matrix[I-1][j-1]=1;} for(I=0;I I){ for(j=0;j j )printf(%d ,matrix[I][j]);printf( \ n );} printf( 1-);deep _ traverse(0);} int deep _ traverse(intma _ I){ int temp,I,j,ma _ j;ma _ j=ma _ I;while(ma _ j n){ if(matrix[ma _ I][ma _ j]visited[ma _ j]==0){ printf( % d-,ma _ j 1);visited[ma _ j]=1;deep _ traverse(ma _ j);} ma _ j;}}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。