2017-11-19 13 views
0

私は動的な2D配列を使用しています。Cのグラフ構造

私は同じように呼び出すことができるように構造体にグラフを実装する:グラフ構造がnは頂点の数であるG = [ COSTS[1:n,1:n], pred[1:n, 1:n], n]ある

initialize(&costs); 
initialize(&pred); 

これは私が持っているものです。

#include <stdio.h> 
#include <stdlib.h> 

int main(){ 
    int **matrix = NULL; 
    int n = 0; 
    int i, j; 

    scanf("%d", &n); 

    matrix = (int**)calloc(n, sizeof(int*)); 
    // matrix is now an array of pointers to integers, which can be used as an array of integer arrays, hence a 2d matrix 

    for (i = 0; i < n; i++) { 
    // create an array for each ith element of matrix; 
     matrix[i] = (int*)calloc(n, sizeof(int)); 
    } 

    for (i = 0; i < n; i++) { 
     for (j = 0; j < n; j++) { 
      matrix[i][j] = 0; //initialize values 
     } 
    } 
} 

は、あなたがそれを行う方法を提案することができますか?

答えて

0

したがって、2つの行列を含む構造体が必要ですか?あなたにも同様にそれにnを置いてもよいので、のようになります。

typedef struct { 
    int n; 
    int **cost; 
    int **pred; 
} graph; 

あなたが順番に行列のそれぞれに書いた初期化コードを使用してください。これがCの場合、返り値malloc()をキャストしないでください。

+0

ああ、私は行列を初期化する関数を作ることができます。ありがとう:) – MonkeyD