У меня проблема с удалением последнего узла моего связанного списка.Я поставил функции printf, чтобы проверить и найти ошибку, но не могу ее найти.Это мой код для удаления последнего узла из несортированного связанного списка.В конце вы увидите четыре функции добавления, и они успешно работают.Единственная сломанная часть - удаление с конца.
void del_Node(LIST* list, int counter) {
if( counter == 0 )
return;
NODE* temp = list->header;
int count=1;
if( list->header == NULL ) {
printf("The list is already EMPTY\n");
return;
}
while( count != counter ) {
temp = temp->next;
count++;
}
printf("%s %s\n", temp->first_name, temp->last_name);
if( list->counter == 1 ) { // Condition for deleting the last node of the linked list
list->header = NULL;
list->tail = NULL;
temp->next = NULL;
temp->pre = NULL;
list->counter--;
}
else if( list->header == temp ) { // Condition for deleting from the beginnig
list->header = temp->next;
printf("%s listenin basından silindi\n", temp->first_name);
temp->next = NULL;
temp->pre = NULL;
list->counter--;
}
else if ( list->tail == temp ) { // Condition for deleting from the end
list->tail = temp->pre;
printf("%s normal listenin tailinden silindi yeni tail %s\n", temp->first_name, temp->pre->first_name);
temp->next = NULL;
temp->pre = NULL;
list->counter--;
}
else { // Condition from deleting from the middle
temp->pre->next = temp->next;
temp->next->pre = temp->pre;
printf("%s normal listede %s------%s arasından silindi\n",temp->first_name, temp->next->first_name, temp->pre->first_name);
temp->next = NULL;
temp->pre = NULL;
list->counter--;
}
del_fn_name(list, temp);
del_ln_name(list, temp);
del_bdt(list, temp);
del_city(list, temp);
free(temp);
printf("List->counter = %d %d %d\n", list->counter, list->fn_count, list->ln_count );
}