2011-11-18 100 views
1

输入是这样如何使邻接矩阵这样的输入

5 // is # of vertices 
1 1 0 1 // 1<->2 1<->3 1<->4 1<->5 
0 0 0 // 2<->3 2<->4 2<->5 
0 1 // 3<->4 3<->5 
1 // 4<->5 

我想使邻接矩阵,当输入插入。怎么做?

我已经作了矩阵这样

array = (int)malloc(sizeof(int)*numVetex); 
+0

我希望你的意思是'array =(int *)malloc(sizeof(int)* numVetex);'?并且你将'array'定义为'int * array;'? –

+0

所以我假设这是一个无向图? – Jacob

+0

是无向图 – Silvester

回答

2

有很多方法可以做到这一点。这里是其中之一:

int **array; 
    int numVertex; 
    int i,j; 

    scanf("%d",&numVertex); 
    array = malloc(sizeof(int*) * numVertex); 
    for(i=0;i<numVertex;i++) { 
      array[i] = malloc(sizeof(int) * numVertex); 
    } 
    for(i=0;i<numVertex-1;i++) { 
      for(j=i+1;j<numVertex;j++) { 
        scanf("%d",&array[i][j]); 
        array[j][i] = array[i][j]; 
      } 
      array[i][i] = 0; 
    } 
    // use array 
    // free it