Я получаю ошибку (ошибка фрагментации) в моем двусвязном списке
void DeleteNode() { struct node *current; struct node *prev; int found = 0; int n; prev = allocate(); current = allocate(); current = head; prev = NULL; printf("\nEnter the value to eliminate: "); scanf("%d",&n); if(head != NULL) { //Assume list: 45,56,22,65 //We want to delete 22 while(current != NULL && found != 1) { if(current -> data == n) { if(current == head) { head = head -> next; head -> previous = NULL; } else if(current == tail) { prev -> next = NULL; tail = prev; } else { prev -> next = current -> next; // current -> next -> previous = prev; // } printf("\n %d was succesfully deleted from the list.\n",n); found = 1; } prev = current; //45,56,22 current = current -> next; //56,22,65 } if(found == 0) printf("\n%d is not found in the list!\n",n); else { free(prev); } } else printf("\nThe list is empty\n"); }
Что я уже пробовал:
Это мой код, я пытаюсь удалить номер из списка. Это двусвязный список. Проблема в том, что когда у меня есть только 1 номер в списке, и я пытаюсь удалить его, я получаю ошибку сегментации. В остальном это работает.*/
jeron1
Пройдя через это с помощью отладчика, вы довольно быстро узнаете, где лежат ваши проблемы, и это, вероятно, плохой указатель.