数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历 - python - ITeye技术网站

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

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

 

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

C代码   收藏代码
  1. #include "stdio.h"  
  2. #define max_matrix 10  
  3.   
  4. int visited[max_matrix],matrix[max_matrix][max_matrix];  
  5. int n;  
  6. int board_traverse();  
  7.   
  8. int main()  
  9. {  
  10.     int i,j;  
  11.     scanf("%d",&n);  
  12.     if (n<1)  
  13.     {  
  14.         printf("n must be >1\n");  
  15.         exit(0);  
  16.     }  
  17.     if (n>max_matrix)  
  18.     {  
  19.         printf("n must be <%d\n",max_matrix);  
  20.         exit(0);  
  21.     }  
  22.     for (i=0;i<n;i++)  
  23.     {  
  24.         visited[i]=0;  
  25.         for (j=0;j<n;j++)  
  26.             matrix[i][j] = 0;  
  27.     }  
  28.     while (scanf("%d %d",&i,&j)==2)  
  29.     {  
  30.         matrix[i-1][j-1]=1;  
  31.     }  
  32.       
  33.     for(i=0;i<n;i++)  
  34.     {  
  35.         for (j=0;j<n;j++)  
  36.             printf("%d ",matrix[i][j]);  
  37.         printf("\n");  
  38.     }  
  39.     printf("1 ");  
  40.     board_traverse(0);  
  41. }  
  42.   
  43.   
  44. int board_traverse()  
  45. {  
  46.     int temp,i,j,ma_j,ma_i;  
  47.     for (ma_i=0;ma_i<n;ma_i++)  
  48.         for (ma_j=ma_i;ma_j<n;ma_j++)  
  49.             if (matrix[ma_i][ma_j] && visited[ma_j]==0)  
  50.             {  
  51.                 printf("%d ",ma_j+1);  
  52.                 visited[ma_j]=1;  
  53.             }  
  54. }  
#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代码   收藏代码
  1. #include "stdio.h"  
  2. #define max_matrix 10  
  3.   
  4. int visited[max_matrix],matrix[max_matrix][max_matrix];  
  5. int n;  
  6. int deep_traverse(int);  
  7.   
  8. int main()  
  9. {  
  10.     int i,j;  
  11.     scanf("%d",&n);  
  12.     if (n<1)  
  13.     {  
  14.         printf("n must be >1\n");  
  15.         exit(0);  
  16.     }  
  17.     if (n>max_matrix)  
  18.     {  
  19.         printf("n must be <%d\n",max_matrix);  
  20.         exit(0);  
  21.     }  
  22.     for (i=0;i<n;i++)  
  23.     {  
  24.         visited[i]=0;  
  25.         for (j=0;j<n;j++)  
  26.             matrix[i][j] = 0;  
  27.     }  
  28.     while (scanf("%d %d",&i,&j)==2)  
  29.     {  
  30.         matrix[i-1][j-1]=1;  
  31.     }  
  32.       
  33.     for(i=0;i<n;i++)  
  34.     {  
  35.         for (j=0;j<n;j++)  
  36.             printf("%d ",matrix[i][j]);  
  37.         printf("\n");  
  38.     }  
  39.     printf("1->");  
  40.     deep_traverse(0);  
  41. }  
  42.   
  43. int deep_traverse(int ma_i)  
  44. {  
  45.     int temp,i,j,ma_j;  
  46.     ma_j = ma_i;  
  47.     while (ma_j<n)  
  48.     {  
  49.         if (matrix[ma_i][ma_j] && visited[ma_j]==0)  
  50.         {  
  51.             printf("%d->",ma_j+1);  
  52.             visited[ma_j]=1;  
  53.             deep_traverse(ma_j);  
  54.         }  
  55.         ma_j++;  
  56.     }  
  57. }  
posted on 2012-05-30 12:07  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/05/30/2526052.html

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐