【发布时间】:2018-03-01 10:11:30
【问题描述】:
我需要创建一个链表数组(如图),这就是我目前所做的:
typedef struct Node {
int data;
struct Node *next;
} Node;
int main(void) {
Node* link[5];
for(int q = 0; q < 5; q++) {
link[q] = malloc(sizeof(struct Node));
link[q] = NULL;
}
}
自从我在 C 语言中使用链表已经有一段时间了,所以我忘记了很多语法,而且我很难想象在编写链表时到底发生了什么。如果我没记错的话,当我在代码中调用 malloc 时,我正在创建一个没有任何内容的节点?
我想将它初始化为指向 NULL。我这样做了
link[q] = NULL;
我说这就是记忆中的样子对吗?
|1| -> 空
|2| -> 空
|3| -> 空
我的下一个问题是将数据插入到链表中。
(参考图片):如果我想在数组的第三个索引中插入另一个元素([3]-> d -> NULL)
这是正确的吗?
Node* newNode = link[3];
newNode->data = 1;
link[3] = newNode;
感谢您的帮助!
【问题讨论】:
-
插入无效。再次出现内存泄漏。看我的回答。
-
谢谢!将尽快编辑:)
-
请问为什么会出现内存泄漏?
-
调用 malloc 而不是 newNode = link[3];正如它所写的那样,你必须写 newNode->next = link[3];
标签: c arrays linked-list singly-linked-list