lvalue
- это переменная, которая может находиться слева от оператора равенства.Это означает, что его значение может быть изменено.Вы не можете изменить значение this
, оно просто не разрешено, поэтому ошибка.
Вы можете переписать свою функцию следующим образом:
node* deleteNode(int i){
if ( this->data == i )
return this->next;
else
{
if ( this->next )
this->next = this->next->deleteNode(i);
else
return this;
}
}
deleteNode()
будетТеперь верните указатель на начало остальной части списка, и рекурсивный алгоритм объединит первую часть с последней.Он не тестировался, поэтому могут потребоваться некоторые корректировки, но я надеюсь, что вы поняли.