Java 如何使用双链表在另一个节点之后插入一个节点?
我想在双链接列表中的另一个节点之后插入一个节点,但当我提供链接列表中不存在的键时,此方法会给我一个错误。我应该如何修复此错误?这是我的密码。提前谢谢Java 如何使用双链表在另一个节点之后插入一个节点?,java,data-structures,linked-list,Java,Data Structures,Linked List,我想在双链接列表中的另一个节点之后插入一个节点,但当我提供链接列表中不存在的键时,此方法会给我一个错误。我应该如何修复此错误?这是我的密码。提前谢谢 { public void AddAfter(int insertAfter, int data) { DLNode n = new DLNode(data); DLNode curr = head; if(head == null) head = n; else { whil
{
public void AddAfter(int insertAfter, int data)
{
DLNode n = new DLNode(data);
DLNode curr = head;
if(head == null)
head = n;
else
{
while(curr.Data != insertAfter && curr != null)
{
curr = curr.next;
}
if(curr != null)
{
n.next = curr.next;
n.prev = curr;
n.next.prev = n;
curr.next = n;
NumNodes++;
}
else
System.out.println("The Key "+insertAfter+" doesn't exist: ");
}
}
}
。。。但是当我提供了一个链表中不存在的键时,这个方法会给我一个错误
问题出现在while循环条件中(例如,curr.Data!=insertAfter&&curr!=null
)。在这里,首先访问curr
变量的data
字段,然后检查curr
是否为空
我应该如何修复此错误
你需要按相反的顺序做。下面的代码应该可以解决您的问题
public void AddAfter(int insertAfter, int data) {
DLNode n = new DLNode(data);
DLNode curr = head;
if(head == null) {
head = n;
}
else {
while(curr != null && curr.Data != insertAfter) {
curr = curr.next;
}
if(curr != null) {
n.next = curr.next;
n.prev = curr;
n.next.prev = n;
curr.next = n;
NumNodes++;
}
else {
System.out.println("The Key "+insertAfter+" doesn't exist: ");
}
}
}
到底是什么错误?我们知道的越多,对我们来说就越容易。包括调用和输出,可能还应该包括列表的完整源代码。作为附加主题:如果没有匹配的insertAfter值,while循环将导致curr=null。因此,将您的检查重写为
while(curr!=null&&curr.Data!=insertAfter)
以便首先检查curr是否为null,这样curr.Data
将不会抛出NPE。抱歉,我没有得到它。你想说什么?