-2

グラフを作成し、そのノードにいくつかの変数を格納する必要があります。この目的のために、配列と整数で構造体を作成することを考えました。次に、作成したすべてのノードを保持する 2 次元配列と、ノード間の接続を保持する 2 番目の配列を作成します。私の問題は、ノード配列を初期化しようとすると、プログラムが動作しなくなることです。誰かが私が間違っていることを教えてもらえますか?

 struct node {
               int KEYS_UNLOCKED[43];
               int points_given;
        };


struct node **NODE_MAT;
NODE_MAT = malloc(doors*sizeof(struct node *) * sizeof(struct node));
for(i=0; i<doors; i++)
    NODE_MAT = malloc(doors*sizeof(struct node *) * sizeof(struct node));

for(i=0; i<doors; i++)
    {
        for(j=0; j<doors; j++)
        {
            for (k=0; k<43; k++)
                NODE_MAT[i][j].KEYS_UNLOCKED[k] = 0;
            NODE_MAT[i][j].points_given = 0;
        }
    }
4

2 に答える 2

1
typedef struct 
{
  int KEYS_UNLOCKED[43];
  int points_given;
}node ;

node **NODE_MAT;

NODE_MAT = (node **)malloc(doors*sizeof(node *)); 
for(i=0; i<doors; i++)
   NODE_MAT[i] = (node *)malloc(doors*sizeof(node));


for(i=0; i<doors; i++)
{
  for(j=0; j<doors; j++)
  {
    for (k=0; k<43; k++)
        NODE_MAT[i][j].KEYS_UNLOCKED[k] = 0;
    NODE_MAT[i][j].points_given = 0;
  }
}

// At end don't forget to free memory !
for(i = 0; i < doors; i++)
    free(NODE_MAT[i]);
free(NODE_MAT);
于 2013-08-17T12:51:37.790 に答える