如何使用通过引用传递的值进行更新以删除双链接列表中的出现次数

How do I use the value passed by reference to update to remove the occurrence within a doublylinkedlist

本文关键字:链接 删除 列表 引用 何使用 更新      更新时间:2023-10-16

我正在使用双向链表,并试图根据用户的输入删除节点。该值通过引用传递给名为 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;
 }
}

编译器是正确的,您尚未在函数中声明_ret。这意味着,您尚未提供变量的类型。

此外,这是执行清单的某种练习吗?如果没有,为什么不简单地使用std::list