• 数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历


    数据结构中用邻接矩阵方式储存图,广度优先,深度优先遍历 - 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. }  

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

    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. }  
  • 相关阅读:
    三十二、恢复单库单表
    三十一、XBK备份
    三十、分库分表备份脚本
    二十九、mysqldump恢复案例
    二十八、mysqldump备份
    二十七、备份介绍
    二十六:慢日志分析
    二十五、二进制日志之GTID模式
    Trie树
    AC自动机
  • 原文地址:https://www.cnblogs.com/lexus/p/2526052.html
Copyright © 2020-2023  润新知