Как использовать значение, переданное по ссылке, для обновления, чтобы удалить вхождение в списке с двумя ссылками - PullRequest
0 голосов
/ 08 февраля 2019

Я использую двусвязный список и пытаюсь удалить узел на основе ввода пользователя.Значение передается по ссылке на функцию с именем remove.Однако написанный мной код не работает со значением, переданным по ссылке ... или, возможно, я неправильно его инициализирую.Я получаю сообщение об ошибке "_ret 'не было объявлено в этой области"

void DoublyLinkedList::remove(const string& s)
{
 if (current == nullptr){
   //return nullptr;
}
 Node *next_ = current->next;
 Node *prev_ = current->prev;
 //I THINK THIS IS WHERE I AM WRONG???
 _ret = Node(s);
 _ret = nullptr;
 //s _ret = nullptr;


 if (next_ != nullptr && prev_!=nullptr){
 current->prev->next = current->next;
 current->next->prev = current->prev;
 delete current->data;
 delete current;
 current = next_;
 _ret = current->data;
 }
 else if (next_ == nullptr && prev_==nullptr){
   this->head = this->tail = nullptr;
   delete current->data;
   delete current;
   current = nullptr;
   _ret = nullptr;
 }
 else if (next_ != nullptr && prev_ == nullptr){
   head = head->next;
   head->prev = nullptr;
   delete current->data;
   delete current;
   current = next_;
   _ret = current->data;
}
else if (next_ == nullptr && prev_ != nullptr){
   tail = tail->prev;
   tail->next = nullptr;
   delete current->data;
   delete current;
   current = nullptr;
   _ret = nullptr;
 }
}

1 Ответ

0 голосов
/ 08 февраля 2019

Компилятор прав, вы не объявили _ret в функции.Это означает, что вы не указали тип переменной.

Кроме того, это какое-то упражнение для реализации списка?Если нет, то почему бы вам просто не использовать std::list?

...