Я пытаюсь получить двойной связанный список, используя C, и сталкиваюсь с cra sh всякий раз, когда я пытаюсь добавить третий узел в свой список. Я нашел строку в своем коде, в которой моя программа падает, но я не могу понять, почему, поскольку код выглядит «безопасным». Я не получил никаких предупреждений или ошибок от компилятора. Если кто-нибудь сможет объяснить возможную ошибку указателя или причину, стоящую за cra sh, это будет высоко оценено. Любые вопросы или проблемы, связанные с моим кодом, будут даны ответы, как только я их увижу.
struct node *appendNode(struct node *headRef, unsigned short int newData) {
struct node *newNode = (struct node*)malloc(sizeof(struct node*));
newNode->data = newData;
newNode->next = NULL;
if(headRef == NULL) { //list is empty and returns the newNode to become the head pointer
newNode->previous = NULL;
return newNode;
} else { //list is not empty and newNode is appended to end of list ----(Area of crash)----
struct node *current = headRef;
while(current->next != NULL) {
current = current->next;
}
current->next = newNode;
newNode->previous = current;
return headRef;
} //----------------------------------------------------------------------------------
};
Код, представленный выше, является функцией, которая добавляет новый узел в список. По завершении он возвращает новый адрес или тот же адрес, чтобы обновить указатель заголовка, используемый в 'main'. Код работает функционально всякий раз, когда я добавляю первые два узла, но вылетает всякий раз, когда он пытается добавить третий узел.