链接列表创建一个新的指针来增加价值但不起作用

Linked List creating a new pointer to add value but not working

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->next)时,列表也会发生变化?这对我来说根本没有意义。

因为你路过最后一个元素。实际上,您应该检查下一个元素是否为 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;