zoukankan      html  css  js  c++  java
  • 图的基本存储结构

    题目要求及测试数据

    图片:
    题目要求:
         输入n,m,n表示该图有n个顶点,m表示该图有m条边。
        
         输出与每个顶点所关联的点。
        
    (数据范围暂时忽略,要求用今天讲的三中存储结构分别来做)
        
    View Code
      1 //邻接矩阵
      2 #include<stdio.h>
      3 #include<string.h>
      4 int map[10][10] ;
      5 void init()
      6 {
      7     memset(map, 0, sizeof(map)) ;
      8 }
      9 int main()
     10 {
     11     int n, m, i, j, u, v, w ;
     12     init() ;
     13     scanf("%d %d", &n, &m) ;
     14     for(i=0; i<m; i++)
     15     {
     16        scanf("%d%d%d",&u, &v, &w) ;
     17        map[u][v] = map[v][u] = w ;
     18     }
     19     for(i=1; i<=n; i++)
     20     {
     21         printf("与%d相关联的点有:\n", i) ;
     22         for(j=1; j<=n; j++)
     23         {
     24             if(map[i][j]!=0)
     25              printf("%d ", j) ;
     26         }
     27         printf("\n") ;
     28     }
     29     return 0 ;
     30 }
     31 
     32 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     33 //邻接表--边表
     34 #include<stdio.h>
     35 #include<string.h>
     36 #include<malloc.h>
     37 struct node
     38 {
     39     int u, v, w ;
     40     int next ;
     41 }g[100];
     42 int head[100], t = 0 ;
     43 void init()
     44 {
     45     t = 0 ;
     46     memset(head, -1, sizeof(head)) ;
     47 }
     48 void add(int u, int v, int w)
     49 {
     50    g[t].u = u ;
     51    g[t].v = v ;
     52    g[t].w = w ;
     53    g[t].next = head[u] ;
     54    head[u] = t ;
     55    t++ ;
     56 }
     57 int main()
     58 {
     59     int n, m, i, j, u, v, w ;
     60     init() ;
     61     scanf("%d%d",&n, &m) ;
     62     for(i=0; i<n; i++)
     63     {
     64         scanf("%d%d%d",&u,&v,&w) ;
     65         add(u,v,w) ;
     66         add(v,u,w) ;
     67     }
     68     for(i=1; i<=n; i++)
     69     {
     70         printf("与%d相关联的点有:\n",i) ;
     71         for(j=head[i];j!=-1;j=g[j].next)
     72         {
     73            printf("%d ",g[j].v) ;
     74         }
     75         printf("\n") ;
     76     }
     77     return 0 ;
     78 }
     79 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     80 //邻接表--链表
     81 #include<stdio.h>
     82 #include<string.h>
     83 #include<malloc.h>
     84 struct node
     85 {
     86     int u, v, w ;
     87     node *next ;
     88 }*head[100];
     89 void init()
     90 {
     91     memset(head, NULL, sizeof(head)) ;
     92 }
     93 void add(int u, int v, int w)
     94 {
     95    node *p = (node*)malloc(sizeof(node)) ;
     96    p -> v = v ;
     97    p -> w = w ;
     98    p-> next = head[u] ;
     99    head[u] = p ;
    100 }
    101 int main()
    102 {
    103     int n, m, i, u, v, w ;
    104     init() ;
    105     scanf("%d%d",&n, &m) ;
    106     for(i=0; i<n; i++)
    107     {
    108         scanf("%d%d%d",&u,&v,&w) ;
    109         add(u,v,w) ;
    110         add(v,u,w) ;
    111     }
    112     for(i=1; i<=n; i++)
    113     {
    114         printf("与%d相关联的点有:\n",i) ;
    115         for(node*p=head[i];p!=NULL;p=p->next)
    116         {
    117            printf("%d ", p->v) ;
    118         }
    119         printf("\n") ;
    120     }
    121     return 0 ;
    122 }
  • 相关阅读:
    每日一题 为了工作 2020 0330 第二十八题
    每日一题 为了工作 2020 0329 第二十七题
    每日一题 为了工作 2020 0328 第二十六题
    每日一题 为了工作 2020 0325 第二十五题
    每日一题 为了工作 2020 0326 第二十四题
    学习总结(十四)
    学习总结(十三)
    学习总结(十二)
    学习总结(十一)
    学习总结(十)
  • 原文地址:https://www.cnblogs.com/yelan/p/2922434.html
Copyright © 2011-2022 走看看