我想在链接列表的末尾添加一个节点。所以我做了一个同样的方法,它给出了预期的结果。但我不确定这个程序是否正确。请查看程序是否正确。
node *insert_end_node(node *nd, int value) {
node *tmp, *p;
tmp = (node *)malloc(sizeof(node *));
tmp->data = value;
tmp->next = NULL;
p = nd;
while (p->next != NULL) {
p = p->next;
}
p->next = tmp;
// nd =tmp;
return nd;
}
提前致谢
最佳答案
有两件事:
- 当您接受指针作为参数时,您应该始终检查它是否为 NULL。在您的情况下,如果
nd == NULL
,那么您将尝试访问NULL->next
,并且您的程序可能会崩溃。 - 当您调用
tmp = (node *)malloc(sizeof(node*))
时,您希望为节点分配足够的内存,而不是为节点指针分配足够的内存。正确的代码是tmp = (node *)malloc(sizeof(node))
。更好的选择是编写tmp = (node *)malloc(sizeof(*tmp))
,因为如果您决定更改tmp
的类型,分配将还在工作。
关于c - 在c中的链表末端节点插入一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24586193/