Не выполняется блок else в условии, когда if выдает false
void del(ListNode* ge_info, char* n) {
Node* begin = ge_info->start_p;
Node* cur_next = nullptr;
Node* cur_prev = nullptr;
do {
if (!strcmp(n, begin->name)) {
cur_next = begin->next;
cur_prev = begin->prev;
delete(begin);
if (cur_prev != nullptr) {
cur_prev->next = cur_next;
} else {
ge_info->start_p == cur_next;
}
if (cur_next != nullptr) {
cur_next->prev = cur_prev;
} else {
ge_info->end_p == cur_prev;
}
break;
}
else {
begin = begin->next;
}
} while (begin->next != ge_info->end_p);
}
if (cur_prev != nullptr) в отладке выдает false, тут все верно, раз if выдает false должен выполниться блок else, но он его пропускает и переходит сразу к if (cur_next != nullptr).
Ответы (1 шт):
Автор решения: vp_arth
→ Ссылка
ge_info->start_p == cur_next
Бессмысленная операция сравнения, компилятор может её смело удалить.
Думаю, что подразумевалось присваивание:
ge_info->start_p = cur_next