Изменение первого элемента линейного списка
Написал код :
void delete_first(LIST_t** first, int res, int res_end)
{
LIST_t* swp = *first;
while (swp->idx_start != res)
{
swp = swp->new_ptr;
}
LIST_t* element = NULL;
if (swp->prev_ptr != NULL)
element = swp->prev_ptr;
while (swp->idx_end != res_end)
{
swp = swp->new_ptr;
free(swp->prev_ptr);
}
if (element != NULL)
element->new_ptr = swp->new_ptr;
else
{
first = &swp->new_ptr;
free((*first)->prev_ptr);
}
}
На вход функции поступает указатель на указатель на первый элемент линейного списка, в какой-то момент мне требуется изменить этот первый элемент, но почему-то то, как сделал я не работает. Из-за чего? Изменение всех остальных элементов работает корректно. Спасибо!
Ответы (1 шт):
Автор решения: Gleb Kamisaraw
→ Ссылка
Решил проблему, но есть НЕБОЛЬШОЕ подозрение, что решение неадекватное))
LIST_t* changer = first->new_ptr;
first->idx_start = first->new_ptr->idx_start;
first->idx_end = first->new_ptr->idx_end;
first->word = first->new_ptr->word;
first->new_ptr = first->new_ptr->new_ptr;
free(changer);