Я пытаюсь добавить узел в конец списка, поэтому я написал простую функцию append_node
. Эта функция нормально работает, но когда я использую for
l oop, дополнительный узел с undefined value
сохраняется в головном узле .
Вот код:
int main() {
linked_list *list;
append_node(&list, 4);
append_node(&list, 20);
append_node(&list, 200);
print_linked_list(list); // 4 20 200
//prints just fine
}
код выше работает нормально, но когда я делаю это ниже:
int main() {
linked_list *list;
for (int i = 0; i < 5; i++)
append_node(&list, i);
print_linked_list(list); // 11342689 0 1 2 3 4
// prints a extra undefined node here at the head
}
ожидаемый результат: 0 1 2 3 4
фактический результат: 11342689 0 1 2 3 4
вот функция append_node
:
void append_node(linked_list **head_ref, int value) {
linked_list *current = *head_ref;
linked_list *new_node = (linked_list *)malloc(sizeof(linked_list));
new_node->node_value = value;
new_node->next_node = NULL;
if (*head_ref == NULL) {
*head_ref = new_node;
return;
}
while (current->next_node)
current = current->next_node;
current->next_node = new_node;
return;
}
всякий раз, когда я использую loop
, список получает новую голову с неопределенным значением . Остальная часть списка кажется правильной. Не знаю, почему это происходит. Кто-нибудь может мне сказать? Заранее спасибо :)