【问题标题】:List with a head as double pointer以头部为双指针的列表
【发布时间】:2015-01-04 20:59:10
【问题描述】:

如果我有一个列表列表

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

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

如果我按照这个方案开发数据结构..

我使用双指针作为 B 的头,以跟踪 A 节点之间的 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

【问题讨论】:

  • @WhozCraig 我很奇怪我使用了与您相同的词,而没有看到您的评论,当您发表评论时,它不在我的答案中,当我编写更好的用法示例时在realloc 中,我注意到OP 可能不知道(*head_b)[i]*(head_b[i]) 之间的区别。
  • 在使用链表的代码中看到[] 似乎很奇怪。
  • 为什么?我还是个初学者;)

标签: c list realloc double-pointer


【解决方案1】:

是的,这正是 realloc 的用途,虽然我会推荐一种不同的使用方式,只是

void *temp;

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

还要注意*head_b[i] 表达式中的运算符优先级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多