0

リストのリストがある場合

typedef Struct b {
int b;
Struct b *next;
}B;

typedef Struct a {
int a;
Struct a *next;
B *link;
}A;

そして、このスキームに従ってデータ構造を開発すると..ここに画像の説明を入力

Aノード間のBのすべてのノードを追跡するために、Bのヘッドとしてダブルポインターを使用します。したがって、realloc を使用してポインターにより多くのデータを与えると、ヘッド内で以前に割り当てられたデータを失うことはありませんよね?

for(i=0;i<n_of_B_lists;i++)
  *head_b[i]=realloc(*head_b[i],sizeof(B *)*1); //1 is for 1 pointer to the new B list
4

1 に答える 1

1

はい、それreallocはまさにそのためのものですが、別の使用方法をお勧めしますが、

void *temp;

temp = realloc(*head_b[i], sizeof(B *));
if (temp == NULL)
    doSomethingReallocFailed();
*head_b[i] = temp;

また、式での演算子の優先順位にも注意して*head_b[i]ください。

于 2015-01-04T21:06:57.993 に答える