在C中将新节点添加到链接列表的末尾

时间:2015-04-09 10:17:54

标签: c linked-list

我必须在链表的末尾添加一个新节点。现在我收到一个错误“Item nr.1错误地将NULL作为下一个指针”。据我所知,对于函数的第一次调用,第一个节点( start )设置为NULL,但我不知道如何适当地编写这个函数。

struct product *add_product(struct product *start, int price) {

struct product *new_node, *temp;

new_node = malloc(sizeof(struct product));

new_node->next = NULL;

new_node->price = price;

if (start == NULL){
   start = new_node;
}

else{
   for (temp = start; temp->next != NULL; temp = temp->next)
   temp->next = new_node;   
}

temp = new_node;

return new_node;
}

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

for (temp = start; temp->next != NULL; temp = temp->next)

应该是

for (temp = start; temp->next != NULL; temp = temp->next);

然后到达链表的末尾并在那里添加一个节点

if(start == NULL)
{
     start = new_node;
     return start;
}
temp = start;

while(temp->next != NULL)
temp = temp->next;

temp->next = new_node;

return start; // Return head