首页IT科技求采用邻接矩阵作为存储结构的有向图各顶点的出度(数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历)

求采用邻接矩阵作为存储结构的有向图各顶点的出度(数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历)

时间2025-06-16 01:13:48分类IT科技浏览4489
导读:以下是作业,用它用实现用邻接矩阵的方式来进行广度优先和深度优先的遍历。...

以下是作业             ,用它用实现用邻接矩阵的方式来进行广度优先和深度优先的遍历             。

代码比较简单                    ,用了两个小时来写出来                    。

/**用邻接矩阵的方式来储存图       ,用广度优先方式进行遍历 **/

C代码
#include"stdio.h" #definemax_matrix10 intvisited[max_matrix],matrix[max_matrix][max_matrix]; intn; intboard_traverse(); intmain() { inti,j; scanf("%d",&n); if(n<1) { printf("nmustbe>1\n"); exit(0); } if(n>max_matrix) { printf("nmustbe<%d\n",max_matrix); exit(0); } for(i=0;i<n;i++) { visited[i]=0; for(j=0;j<n;j++) matrix[i][j]=0; } while(scanf("%d%d",&i,&j)==2) { matrix[i-1][j-1]=1; } for(i=0;i<n;i++) { for(j=0;j<n;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<n;ma_i++) for(ma_j=ma_i;ma_j<n;ma_j++) if(matrix[ma_i][ma_j]&&visited[ma_j]==0) { printf("%d",ma_j+1); visited[ma_j]=1; } }
#include "stdio.h" #define max_matrix 10 int visited[max_matrix],matrix[max_matrix][max_matrix]; int n; int board_traverse(); int main() { int i,j; scanf("%d",&n); if (n<1) { printf("n must be >1\n"); exit(0); } if (n>max_matrix) { printf("n must be <%d\n",max_matrix); exit(0); } for (i=0;i<n;i++) { visited[i]=0; for (j=0;j<n;j++) matrix[i][j] = 0; } while (scanf("%d %d",&i,&j)==2) { matrix[i-1][j-1]=1; } for(i=0;i<n;i++) { for (j=0;j<n;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;ma_i<n;ma_i++) for (ma_j=ma_i;ma_j<n;ma_j++) if (matrix[ma_i][ma_j] && visited[ma_j]==0) { printf("%d ",ma_j+1); visited[ma_j]=1; } }

/**用邻接矩阵的方式来储存图      ,用深度优先方式进行遍历 **/

C代码
#include"stdio.h" #definemax_matrix10 intvisited[max_matrix],matrix[max_matrix][max_matrix]; intn; intdeep_traverse(int); intmain() { inti,j; scanf("%d",&n); if(n<1) { printf("nmustbe>1\n"); exit(0); } if(n>max_matrix) { printf("nmustbe<%d\n",max_matrix); exit(0); } for(i=0;i<n;i++) { visited[i]=0; for(j=0;j<n;j++) matrix[i][j]=0; } while(scanf("%d%d",&i,&j)==2) { matrix[i-1][j-1]=1; } for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d",matrix[i][j]); printf("\n"); } printf("1->"); deep_traverse(0); } intdeep_traverse(intma_i) { inttemp,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++; } }
声明:本站所有文章                    ,如无特殊说明或标注             ,均为本站原创发布       。任何个人或组织      ,在未征得本站同意时                    ,禁止复制             、盗用                    、采集       、发布本站内容到任何网站             、书籍等各类媒体平台             。如若本站内容侵犯了原著者的合法权益             ,可联系我们进行处理                   。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
sistray.exe – sistray是什么进程 有什么用 二进制思想的体现(二进制枚举(二))