从链表中删除包含键的节点
Remove the node that contains the key from the Linked list
我有一个删除方法,找到那个列表中的元素并删除 it.That主题是关于双向链接的 list.Is我的操作在 if 和 else if 语句中为 true 以形成新列表?
public void Remove(int key) {//key = number in the list.
if (head == null) {
System.out.println("Empty List..!");
} else if (key == head.key) {
head.prev.next = head.next;
head.next = null;
noOfNodes--;
} else if (key == tail.key) {
tail.next.prev = tail.prev;
tail.prev = null;
noOfNodes--;
} else {
for (LinkedListNode temp = head; temp.next != null; temp = temp.next) {
if (temp.key == key) {
temp.prev.next = temp.next;
temp.next.prev = temp.prev;
temp.prev = null;
temp.next = null;
noOfNodes--;
}
}
}
}
从您的代码来看,tail
似乎是链表的最后一个节点。
所以,这可能就是问题所在 tail.next.prev = tail.prev;
。由于 tail.next
是 null
,因为 tail
是最后一个元素,当您在 tail.next
上访问 prev
时,它会抛出 NullPointerException
.
我有一个删除方法,找到那个列表中的元素并删除 it.That主题是关于双向链接的 list.Is我的操作在 if 和 else if 语句中为 true 以形成新列表?
public void Remove(int key) {//key = number in the list.
if (head == null) {
System.out.println("Empty List..!");
} else if (key == head.key) {
head.prev.next = head.next;
head.next = null;
noOfNodes--;
} else if (key == tail.key) {
tail.next.prev = tail.prev;
tail.prev = null;
noOfNodes--;
} else {
for (LinkedListNode temp = head; temp.next != null; temp = temp.next) {
if (temp.key == key) {
temp.prev.next = temp.next;
temp.next.prev = temp.prev;
temp.prev = null;
temp.next = null;
noOfNodes--;
}
}
}
}
从您的代码来看,tail
似乎是链表的最后一个节点。
所以,这可能就是问题所在 tail.next.prev = tail.prev;
。由于 tail.next
是 null
,因为 tail
是最后一个元素,当您在 tail.next
上访问 prev
时,它会抛出 NullPointerException
.