Java:如何使用虚拟节点或将节点标记为虚拟节点

Java:如何使用虚拟节点或将节点标记为虚拟节点,java,linked-list,dummy-data,Java,Linked List,Dummy Data,要求您删除链接列表中中间节点的问题,只给出该节点。 解决此问题的方法是将middle.next.element复制到middle.element,然后通过执行middle.next=middle.next 有一种特殊情况是middle.next是最后一个节点。 答案是可以将中间节点标记为dummy 我不熟悉“哑巴”这个概念。如何将节点标记为虚拟节点,以及如何在其他情况下使用虚拟节点 一般来说,虚拟数据怎么样 这个问题没有一般的答案。链表的实现必须已经定义了虚拟节点的概念并一致地使用它。实现这一点

要求您删除链接列表中中间节点的问题,只给出该节点。 解决此问题的方法是将
middle.next.element
复制到
middle.element
,然后通过执行
middle.next=middle.next

有一种特殊情况是middle.next是最后一个节点。 答案是可以将中间节点标记为dummy

我不熟悉“哑巴”这个概念。如何将节点标记为虚拟节点,以及如何在其他情况下使用虚拟节点


一般来说,虚拟数据怎么样

这个问题没有一般的答案。链表的实现必须已经定义了虚拟节点的概念并一致地使用它。实现这一点的典型方法是声明一个特殊的虚拟实例:

public class Node {
   public static final Object DUMMY = new Object();
   ...
分配
middle.element=DUMMY

正如您可以想象的那样,除非API实现的所有其余部分都遵守此约定,否则这不会产生任何效果


如果您的列表被指定为无法包含
null
元素,那么您也可以分配
middle.element=null
,但故事的其余部分保持不变。

您可以将一些特殊值放入节点或添加属性(取决于节点的类型)。然后,您必须分析要检索的节点,并跳过包含该特殊值或属性(标记为dummy)的所有节点。如果您可以发布(指向)原始文本/源的链接,这会有所帮助。据我所知,这个想法是为最后一个元素使用一个虚拟节点,而不仅仅是
null
,因此,如果删除了倒数第二个节点(最后一个真实节点),您不必回溯到之前的节点,以更改该节点的
下一个
元素。这个想法是为了避免删除列表上的操作。