Я изучаю связанные списки в C, и у меня проблема с моей функцией удаления, которая дает мне ошибку сегментации. Я не знаю, что не так с кодом.Связанный список Ошибка сегментации C
void delete(int d)
{
struct list * current1 = head;
struct list * current2;
if (len() == 0)
{ //prtError("empty");
exit(0);
}
if (head -> data == d)
{
head = head -> next;
}
//Check if last node contains element
while (current1->next->next != NULL)
current1 = current1->next;
if(current1->next->data == d)
current1->next == NULL;
current1 = head; //move current1 back to front */
while(current1 != NULL && (current1->next->data != d))
current1 = current1 -> next;
current2 = current1 -> next;
current1 -> next = current2 -> next;
}
Этот же вопрос был дважды спросил в течение последних 30 минут. – Jashaszun
Если вы используете компилятор C++ (например, Visual C++) для компиляции этого кода - проверьте некоторые проблемы с вашей функцией с именем 'delete'.Это зарезервированное ключевое слово –
Кажется, что 'current1' может быть' NULL' в этой строке 'current2 = current1 -> next;' – imreal