Я столкнулся с некоторыми проблемами при попытке удалить Node из двусвязного списка.Хотя я обычно могу удалить узлы, в тот момент, когда я пытаюсь удалить первый элемент, происходит сбой моей программы и возвращается ошибка 3221225477.
Я создаю свой список с заголовком, например:
typedef struct Inode2*Task;
typedef struct Inode2{
int ID;
int Priority;
int Status;
char *Description;
Person *person;
Date *creation;
Date *deadline;
Date *conclusion;
Task next;
Task previous;
}Task_node2;
Task TaskCreate() {
Task aux=(Task)malloc(sizeof(Task));
aux->next=NULL;
aux->previous=NULL;
return aux;
}
Насколько я знаю, это создание списка с заголовком, который мне дан для дальнейшей работы.
У меня есть функция для вставки узла в конец этого списка.,Кажется, это работает отлично.
Всякий раз, когда я использую эту функцию удаления для первого элемента, она падает:
int TaskRemove(Task h,int IDREMOVE) {
int val;
for(;h;h=h->next)
{
if (h->ID==IDREMOVE)
{
h->previous->next = h->next;
val++;
if (h->previous->previous==NULL)
{
h->previous->next = h->next;
}
}
}
if (val==0)
{
printf("\n\tNo node with such ID\n");
sleep(1);
}
return val;
}
Это работает на каждом элементе, кроме последнего.Что происходит?Заранее спасибо.