首页 > 解决方案 > 为什么使用“node.getNext( ) == null”作为失效节点的约定?

问题描述

这是《Java 中的数据结构和算法(第 6 版)》一书中的代码片段,这是 LinkedPositionalList 实现的一部分。我不明白这行:“if (node.getNext() == null) // 失效节点的约定”是干什么用的。我将不胜感激有关其功能的一些解释。

// private utilities
/** Validates the position and returns it as a node. */

private Node<E> validate(Position<E> p) throws IllegalArgumentException { 

if (!(p instanceof Node)) throw new IllegalArgumentException("Invalid p");

Node<E> node = (Node<E>) p; // safe cast

if (node.getNext( ) == null) // convention for defunct node
    throw new IllegalArgumentException("p is no longer in the list");

return node;
}

标签: javadata-structures

解决方案


您所询问的书中的实现使用了一个显式trailer节点,该节点表示结构中的“结束后”位置。因此,列表中的所有节点都必须有下一个节点。因此,如果一个节点的getNext()方法返回null该节点不在列表中。


推荐阅读