我使用的是双向链表,我试图删除基于用户输入的一个节点。该值通过引用传递给函数命名删除。不过,我写的代码似乎不通过引用传递的值工作...或许我没有正确初始化。我得到的“错误错误:‘_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
?