为什么迭代链表中的节点不是 C++ 中的赋值?

Why is iterating through nodes in linked list not an assignment in C++?

我坐在车里思考我的 LinkedList 项目时,一个关于这个特定代码的问题出现在我的脑海中。

Node* current = head;
while (current != nullptr) {
    // do stuff here
    current = current->next; // -> Why does this not permanently affect the linkedlist?
}

我在评论中指定了这一点。为什么设置 current = current->next 不是永久的,但是当我添加到节点的末尾时,结果 is?

在这段代码中,您只是循环访问 link 列表。您只是将 link 列表元素的地址分配给当前指针。在此循环结束时,电流将指向 nullptr。

你需要看看你实际分配给了什么。

您有一个局部变量 current。将其更改为指向不同的节点不会修改节点本身。这就像您有一张纸,上面有不同的房屋地址。更改纸上的地址不会移动房屋。

当你添加一个新节点时,你可以查看纸上的地址,去那所房子,然后在房子的墙上敲一扇新门。 current->next = X 敲开了新门。 current=X 更改写在您的小纸片上的地址,但不会更改房子。

就这么简单。 Current是指向链表的指针,会一直变化,直到你没有按照这段代码到达链表的末尾。我希望这就是你在问题中提出的问题,我已经说清楚了。