在 C 中的链表的末尾添加一个新节点
Adding a new node to the end of a linked list in C
我必须在链表的末尾添加一个新节点。现在我得到一个错误 "Item nr. 1 incorrectly has NULL as next pointer"。我知道对于函数的第一次调用,第一个节点 (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;
}
非常感谢你的帮助。
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
我必须在链表的末尾添加一个新节点。现在我得到一个错误 "Item nr. 1 incorrectly has NULL as next pointer"。我知道对于函数的第一次调用,第一个节点 (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;
}
非常感谢你的帮助。
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