Скорее всего, root причина проблемы missing error handling
. т. е. может соблюдаться базовое правило c: перед разыменованием любого указателя его следует проверить.
void ll_append(Node* head, int day, int num, int len){
Node* new_cnode = ll_create(day,num);
Node* last = head;
while (last->next != nullptr) //Here, last (i.e. head) can be nullptr.
last = last->next;
last->next = new_cnode;
}
Решение может быть принято, когда вызывающий абонент ll_append
должен обеспечить head
или ll_append
сам может подтвердить.
Первое решение может выглядеть следующим образом:
void ll_append(Node*& head, int day, int num, int len){
Node* new_cnode = ll_create(day,num);
//Case 1 : When head is pointing to empty list, you can create the first node.
if(not head)
{
head = new_node;
return;
}
//Case 2 : When head is pointing to a valid list (i.e. at least one node is present)
Node* last = head;
while (last->next != nullptr)
last = last->next;
last->next = new_cnode;
}