【发布时间】:2019-06-26 13:23:36
【问题描述】:
我是 C 的新手,并试图理解一些基本的东西。 我正在尝试创建一个包含由链表组成的数组的结构。 围绕这个。
--------------------------------
| A | B | C |
--------------------------------
| | |
V V V
------- ------- -------
| a | | b | | c |
------- ------- -------
|
V
--------
| a1 |
--------
意思是有一个数组来保存每个链表的头(A,B和C),每个头都将保存一个指向下一个节点的指针。
我有一个结构对象
typedef struct Object {
void* data;
struct Object* next;
struct Object* head;
}Object;
还有一个包含更多信息的表格
typedef struct Table {
Object** arr;
//More info...//
}Table;
我有一个函数应该用数组创建一个表。
Table* createTable(){
Table* table = (Table*)malloc(sizeof(struct Table*));
Object **array = (Object**)malloc(3*sizeof(struct Object*));
for(int j = 0; j < size; j++){
array[j] = malloc(sizeof(struct Object));
}
table->arr = array;
return table;
}
但是我所有的记忆都没有像我希望的那样工作,我一直得到一个只有一个节点的数组。 我想我仍然缺少一些基本的东西。
谢谢
【问题讨论】:
-
malloc(sizeof(struct Table*)->malloc(sizeof(struct Table) -
...而
for(int j = 0; j < size; j++)中的size是什么? -
见Do I cast the result of malloc?。此外,您所做的与设置哈希表没有太大区别。您可能想查看“桶”(数组)如何占据冲突发生时实现的“链式”列表的头部。
Object **array = malloc (3 * sizeof *array);就足够了。
标签: c arrays object linked-list