给定两个双链表,我不仅要改变元素,还要改变其中一个链表的节点,以便相同位置的和等于某个数字。
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 =两个列表的大小相同。我试过很多东西,但它总是给我nullpointerexception在p.next = right和s.previous = right;
我不明白为什么它给我这个错误。有人能给我解释一下解决这个问题的方法吗?
表示p为null
Node p = right.previous;
必须返回null
看到right
被定义为head2
,您将不得不查看头2并找出head2.previous
为空的原因。我猜这是列表的开头还是什么。
你需要把空检查,所以你只运行操作的下一个/前一个节点,当他们不是空