java - 为什么使用“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;
}
解决方案
您所询问的书中的实现使用了一个显式trailer
节点,该节点表示结构中的“结束后”位置。因此,列表中的所有节点都必须有下一个节点。因此,如果一个节点的getNext()
方法返回null
该节点不在列表中。
推荐阅读
- pine-script - 将 Pine 脚本转换为 MQL4 语言(简易指示器)
- flutter - Flutter intl 版本冲突
- java - Selenium:cssSelector 和路径都找不到元素
- haskell - Lambda演算评估:首先减少表达式然后替换?
- swift - 标签.文本错误!- 在隐式展开可选值时意外发现 nil
- c++ - 如何将变量传递给 cmake 脚本
- apache-kafka - 内部 kafka 流主题的保留期
- c# - 泛型类型参数的多态模型绑定
- jsxgraph - JSXGraph - 持久性问题:绘制多个函数
- javascript - 如何从`getStaticProps`向API路由发出请求