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

标签 java linked-list dummy-data

题目要求你删除链表中的中间节点,只给出那个节点。 解决方法是将middle.next.element复制到middle.element,然后通过middle删除middle.next .next=middle.next.next

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

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

一般情况下虚拟数据如何?

最佳答案

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

public class Node {
   public static final Object DUMMY = new Object();
   ...

并分配 middle.element = DUMMY;

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

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

关于Java:如何使用虚拟节点或将节点标记为虚拟节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887596/

相关文章:

javascript - Node的 `smart-list`链表模块如何使用hasNext()和hasPrevious()方法

java - 使用链表添加多个项目,JAVA

c++ - 初学者 C++ 程序上的 APPCRASH,调用函数上的公共(public)方法

r - 从列表创建虚拟变量

bash - 在 bash 中生成虚拟文件

java - 尝试使用动态创建的图像按钮时出现空指针异常

java - 无法解决依赖关系...直到更新间隔已过或强制更新

java - Scala reduce 和 fold 返回 0 而不是一个值

java - 在 Java 中不使用 .size() 的环形缓冲区的lush() 和 isEmpty() 方法

mysql - 如何在 MySQL Workbench 中使用虚拟数据填充现有数据库?