【发布时间】:2016-11-29 04:06:14
【问题描述】:
struct node {
struct node *next;
int num;
} Node;
Node *insert(int i) {
Node *head;
for (int c = 0; c < i; c++) {
head = malloc(sizeof(Node));
head.num = i;
head = head->next;
}
}
插入函数应该创建一个链表并将从 0 到 i 的数字添加到该链表中。但是,它也应该返回一个指向列表开头/列表本身的指针,我似乎不知道该怎么做。在添加第一个节点后,我尝试创建一个指针并将其设置为等于 head,但它只返回第一个节点而不是整个列表。有人可以帮忙吗?谢谢。
【问题讨论】:
-
你更大的问题是你没有为 head->next 分配任何值,所以你根本没有真正创建一个链表,只是一堆在空间中漂浮的节点跨度>
-
我不确定我是否理解。因为我正在重新分配 head,所以 head->next 的 num 值不会是 1 吗?所以它会是一个 0->1->2->3.....->c 的链表,对吧?
-
当您分配
head = head->next;时,您将在刚刚分配的指针上分配一个未初始化的指针。您泄漏了内存并存储了一个未定义的指针。你有很大的问题。该函数也应该返回一个值,但没有。
标签: c pointers linked-list