链接列表实现.黑客排名视频



我正在学习DS,并看到了链表上黑客排名的简短视频教程。

这几乎是不言自明的,但我无法理解她说的一点">如果我们预先附加,那么我们将有一点问题"。在这里,她基本上告诉移动将代码附加到另一个类中。 我试图理解和可视化她的实际意思,以及如果我们将其保留在 Node 类本身中可能会有什么潜在问题。她提到了,但我无法理解这个概念。

这是链接 : https://www.youtube.com/watch?v=njTh_OwMljA&t=186s 时间:3:01

有人可以再详细说明一下。

当您尝试预追加(在开头附加值(时会出现特定问题。

节点类创建多个对象。 假设您的列表是这样的,1->2->3->4->5每个数字都是一个节点。

现在你想做正常的追加(在最后(,你调用3.append()current指向3,则迭代到最后一个节点并附加它。这里没有问题。

现在,当您尝试预附加它时,理想情况下,您正在更改列表中存在的每个节点的头部。

假设您要预先附加0。您的列表应如下所示0->1->2->3->4->5.0是链表的实际负责人。

如果你以同样的方式调用3.pre_append(),你最终会得到类似的东西

1->2->3 X 0->3->4->5,您将更改从中调用函数的节点的头部,而不是您要做的整个链表的头部。

因此,只有该节点的头部会发生变化,所有其他节点都不知道谁的头部是谁,或者更糟糕的是,根据谁调用pre_append,可能会有多个头部。

为了避免这种对头的访问受到限制,因此pre_append方法被转移到另一个类,其中只有一个节点可以引用为头。

最新更新