Функция (deleteall) берет связанный список и значение и удаляет все узлы, которые содержат это значение, а затем возвращает список после изменения.
Pointer deleteall(Pointer l, int v)
{
Pointer temp;
while(l != NULL)
{
if(l->val == v) {
temp = l;
l = temp ->next;
free(temp);
}
if(l == NULL) return l;
else l = l->next;
}
return l;
}
Ошибка не отображается, компилятор завершает работу и ничего не показывает, я думаю, что программа зацикливается.
return l;
, но вы изменилиl
. Запомнитеl
в начале и верните его. - person Paul Ogilvie   schedule 23.07.2020free
узел, вам также нужно заполнить пробел, то есть связать предыдущий узел со следующим - person sebastian   schedule 23.07.2020gdb
, это позволит вам выполнять эту функцию построчно, чтобы вы могли видеть, где поведение неправильно. - person TSG   schedule 23.07.2020