我试图动态分配指针列表结构,每个包含结构列表如下定义的指针:名单在C列表
struct node {
char *text;
struct node *next; };
我也使用一个typedef:
typedef struct node Node;
我创建节点列表通过声明来保存每个列表如下:
Node **list;
list = (struct node**) malloc(sizeof(struct node*) * arraySize);
在每个list
我有我正在创建另一个列表如下节点:
list[i] = malloc(sizeof(struct node*) * subArraySize);
我有几个问题:
- 这是这样一个问题的正确实施?
- 如何访问较大列表中每个列表的第一个节点的
text
数据成员?
如果我的问题含糊不清,请告诉我。我对这个话题的困惑使我很难正确地说出我的问题。
您的typedef没有任何用处。您使用单词“list”(和变量名称“list”)来引用列表和数组。当您不清楚您有任何图层正常工作时,您正试图使用间接塔。你必须先从简单的问题入手,并处理复杂的问题,否则你肯定会失败。 – Beta
看起来你试图构建一个包含指向几个链表头的数组,对吧?第二部分,'list [i] = malloc(sizeof(struct node *)* subArraySize);'是一种误导,因为您提前为多个'节点'分配了连续的内存块,而通常您可能会在创建时为每个节点分配内存,或者至少你不会使用这个非常严格的二维数组结构。 – 2rs2ts
如果您尝试制作指向链接列表的动态数组指针,则辅助malloc没有任何意义。后者是*链接列表*,因此不需要分配矢量(假设“下一个”成员不仅仅是出于窗口修饰或其他恶意目的)。那就是说,你真的试图解决什么问题,一个带有碰撞链的散列表? – WhozCraig