Я проектирую нестатический c пустой метод, называемый unlinkNode, который принимает Node n в качестве параметра. Он должен гарантировать, что узел не связан с узлами до и после него. Необходимо изменить prev узла после n и следующий узел перед n. В настоящее время, когда я запускаю его, я получаю сообщение об ошибке
[ ERROR ] exception in unit test code!
java.lang.
NullPointerException
at LinkedList.unlinkNode(LinkedList.java:111)
at UNITTEST.test_default(UNITTEST.java:19)
at UNITTEST.main(UNITTEST.java:81)
Строка 111: n.getPrev (). Next = null;
Даже если я вставил операторы if
, чтобы убедиться, что что если n - это хвост, чтобы не получить доступ к его предыдущему, и если его голова, чтобы не получить доступ к его следующему, чтобы убедиться, что ничего нулевого не получено.
Вот метод:
public void unlinkNode(Node n) {
if(head != n && head != null) {
n.getNext().prev = null;
}
if (tail != n && tail != null) {
n.getPrev().next = null;
}
}
И код, который все настраивает
public class LinkedList {
public static class Node{
String key;
int value;
Node next;
Node prev;
public Node(String key, int value) {
this.key = key;
this.value = value;
}
public Node getNext() {
return next;
}
public Node getPrev() {
return prev;
}
public String getKey() {
return key;
}
public int getValue() {
return value;
}
}
private Node head;
private Node tail;
public LinkedList() {
head = null;
tail = null;
}
public Node getHead() {
return head;
}
public Node getTail() {
return tail;
}
public void addHead(String key, int val) {
Node n = new Node(key, val);
if(head == null) {
head = n;
tail = n;
} else {
head.prev = n;
n.next = head;
head = n;
}
}
public void addTail(String key, int val) {
Node n = new Node(key, val);
if(tail == null) {
head = n;
tail = n;
} else {
tail.next = n;
n.prev = tail;
tail = n;
}
}
}