void List::add_item(double new_value)
{
if (list == nullptr)
{
list = new ValueList;
list->value = new_value;
list->next = nullptr;
}
else
{
ValueList* track = list;
while (track != nullptr)
{
track = track->next;
}
track = new ValueList;
track->value = new_value;
track->next = nullptr;
}
size += 1;
}
使用上面的以下代码,我试图通过在链表中循环直到它到达列表的末尾来向链表中添加一个新值,然后创建一个动态变量来将该值存储在链表中。
然而,我不明白为什么当我输出链接列表时它没有这样做。它只显示列表中的最后一项。这是否意味着track实际上指向列表,并且当我循环通过时,例如track=track->接下来,那么列表也有变化吗?这对我来说毫无意义。
因为您正在传递最后一个元素。实际上,您应该检查下一个元素是否为nullptr
,而不是您所在的元素是否为nullptr
。
while (track != nullptr)
{
track = track->next;
}
应该是:
while (track->next != nullptr)
{
track = track->next;
}
track->next = new ValueList;
track->next->value = new_value;
track->next->next = nullptr;