LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

не апдейтится предыдущий-то. он указывает на удаленный. и не на надо делать двойной указатель.

*pcur - это двойной указатель на текущий. раз вы сравниваете

(*pcur)->data == key
 struct Node* tmp = *pcur;
            *pcur = (*pcur)->next;
            free(tmp);

тут вы просто удаляете текущий и переставляете текущий на следующий… но у вас не корректирован указатель у предыдущего элемента списка. он все еще показывает на удаленный.

и не мучьте ж. двойной косвенностью. она тупо медленней, за счет лишнего разыменования, чем просто указатель.

чатгпт правильно написал. смотрите у него

Исходная версия alysnix, :

не апдейтится предыдущий-то. он указывает на удаленный. и не на надо делать двойной указатель.

*pcur - это двойной указатель на текущий. раз вы сравниваете

(*pcur)->data == key
 struct Node* tmp = *pcur;
            *pcur = (*pcur)->next;
            free(tmp);

тут вы просто удаляете текущий и переставляете текущий на следующий… но у вас не корректирован указатель у предыдущего элемента списка. он все еще показывает на удаленный.

и не мучьте ж. двойной косвенностью.он тупо медленней, за счет лишнего разыменования, чем одиночный указатель.

чатгпт правильно написал. смотрите у него