给定两个双链表我应该更改,不仅仅是元素,而是其中一个列表的节点,以便相同位置的总和等于某个数字。
public void repair(int num){
Node list1 = head1;
Node right = head2;
for(int i = 0; i<size; i++){
int element = num - list1.element;
Node p = right.previous;
Node s = right.next;
right = new Node(element, null, null);
p.next = right;
right.previous = p;
right.next = s;
s.previous = right;
list1 = list1.next;
right = right.next;
}
}
size =两个列表的大小相同。 我已经尝试过很多东西,但它总是在p.next = right和s.previous = right上给我nullpointerexception;
我不明白为什么它会给我这个错误。有人可以解释并告诉我解决这个问题的方法吗?
答案 0 :(得分:1)
这意味着p是null
Node p = right.previous;
必须返回null
看作right
定义为head2
,您必须查看头部2并找出head2.previous
为空的原因。我想这是列表的开头或者什么。
您需要进行空检查,这样只有当它们不为空时,才会对下一个/上一个节点运行操作。