java - 什么是导致删除双向链表中第n个节点的解决方案中的空指针异常?
问题描述
任务是删除双向链表的第 n 个节点。我把它画出来了,我没有看到让我绊倒的空指针错误。
我创建了一个 if 语句来处理空列表的边缘情况。我创建了一个while循环来遍历链表,否则。尝试设置节点链接时出现错误。详情如下。
public double delete (int k) {
int i = 0;
Node temp = first;
double retVal;
if (k < 0 || k >= N) throw new IllegalArgumentException ();
if (temp == null)
return 0;
while (temp != null) {
if (i == k - 1) {
temp.next = temp.next.next;
temp.next.next.prev = temp;
temp.next.next = null;
temp.next.prev = null;
return temp.next.item;
} else {
i++;
temp = temp.next;
}
}
return 0;
我期待删除并返回要删除的节点。相反,我在用“//Issue”注释的那一行得到了一个空指针异常。
解决方案
您必须检查 temp.next 和 temp.next.next 是否存在。在您的上下文中,我们可能有 1->2->3->null,您可能指的是 null。
推荐阅读
- netsuite - 如何使用 API 在 Netsuite 中触发脚本
- time - 将 @time 报告的 Julia 中大型向量的分配翻倍
- java - Storm 拓扑不在集群中执行
- database-design - 构建数据库关系以跟踪应用程序设置的不同变化
- ios - 支持 iOS 12 和 13 时的 AppDelegate 和 SceneDelegate
- javascript - 使用 ShinyJS 初始化隐藏元素
- java - 如何解决“buyTickets”类
- rust - 为什么使用 Option unwrap 不移动值?
- php - 将新订单项目添加到现有 Woocommerce 订单时出错
- arduino - 尝试使用 Arduino Nano 让 OLED 显示来自超声波范围传感器的输入