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;
}
}
insert函数的作用是创建一个链表,并将从0到i的数字添加到该链表中。然而,它也应该返回一个指针,指向链表的开头/链表本身,但我似乎不知道该怎么做。我尝试过创建一个指针,并在添加第一个节点后将其设置为head。但是它只返回第一个节点而不是整个列表。2有人能帮忙吗?3谢谢。
2条答案
按热度按时间a11xaf1n1#
你可能想记住前一个节点,这样你就可以分配它的下一个指针。当你添加一个节点时,把它的下一个指针设置到旧的头节点,它现在就变成了列表的新头节点。你可以在循环的最后一次迭代之后返回它。
更新:要在列表末尾插入每个新元素,需要做更多的簿记工作:
5uzkadbs2#
这就像引入另一个变量一样简单,您目前有
head
来跟踪列表的头部;添加另一个以跟踪列表的“尾部”:如有必要,还可以为
i == 0
添加一个特例。顺便说一下--我意识到这可能是作为练习交给您的一项任务--但是对于一个实际创建并填充一个全新列表的函数来说,
insert
是一个糟糕的名称。