所以我很难让它上班,即使经过大量的谷歌搜索,我也无法让它发挥作用。以下是我正在开展的工作:
bool deleteOneOf(const std::string & target)
{
Node * ptr = _first;
Node * temp;
while (ptr != nullptr)
{
if (target != ptr->_entry)
{
temp = ptr;
ptr = ptr->_link;
}
else
{
temp->_link = ptr->_link;
delete ptr->_link;
return true;
}
}
return false;
}
我必须使用的Node类是:
class Node
{
public:
std::string _entry;
Node * _link;
Node(std::string entry, Node * link) : _entry(entry), _link(link)
{}
};
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
您尚未初始化临时值。如果您正在查看列表中的第一个元素,它将指向垃圾。此外,您需要删除ptr。固定代码:
bool deleteOneOf(const std::string & target)
{
Node * ptr = _first;
Node * temp = nullptr;
while (ptr != nullptr)
{
if (target != ptr->_entry)
{
temp = ptr;
ptr = ptr->_link;
}
else
{
if (temp)
temp->_link = ptr->_link;
else
_first = ptr->_link;
delete ptr;
return true;
}
}
return false;
}