Ошибка удаления элемента линейного связного списка
Суть проблемы заключается в том, что при попытке удаления элемента линейного связного списка, мне открывается какой-то файл(я не особо пока понимаю что это) и указывает на эту часть кода:
// MEMBER FUNCTIONS FOR _Container_base12
inline void _Container_base12::_Orphan_all() noexcept {
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy) { // proxy allocated, drain it
_Lockit _Lock(_LOCK_DEBUG);
for (auto _Pnext = &_Myproxy->_Myfirstiter; *_Pnext; *_Pnext = (*_Pnext)->_Mynextiter) {
(*_Pnext)->_Myproxy = nullptr;
}
_Myproxy->_Myfirstiter = nullptr;
}
#endif // _ITERATOR_DEBUG_LEVEL == 2
}
Сама задача заключается в следующем, имеется два вида узла:
struct illnes {
int code_illnes = 0;
illnes* next_illnes = nullptr;
string date_registration;
};
struct patient {
string second_name;
number medical_policy = 0;
patient* next_patient = nullptr;
illnes* illnes_list = nullptr;
};
И нужно реализовать удаление уже готового линейного связного списка по коду болезни у одного из пациентов. Суть структуры линейного списка - у пациента лежит указатель на начало списка заболеваний где у первого и второго имеются данные указанные выше.
Вот функция, которая удаляет элемент. Строки, удаляющие элементы выделены:
void delete_code_illnes(patient*& group_1, int code_illnes, number medical_policy)
{
patient* p = find_patient(group_1, medical_policy);
illnes *i1 = nullptr, * i2 = nullptr, *i3 = nullptr;
i1 = p->illnes_list;
while (i1->next_illnes->code_illnes != code_illnes)
{
i1 = i1->next_illnes;
}
if (i1->next_illnes->code_illnes == code_illnes)
{
i2 = i1->next_illnes->next_illnes;
'delete[] i1->next_illnes;'
i1->next_illnes = i2;
}
else if (i1->next_illnes == nullptr)
{
'delete[] i1->next_illnes;'
i1->next_illnes = nullptr;
}
else
{
'delete[] i1;'
}
}