替换双链表中的节点

时间:2013-03-14 16:32:47

标签: java linked-list

给定两个双链表我应该更改,不仅仅是元素,而是其中一个列表的节点,以便相同位置的总和等于某个数字。

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;

我不明白为什么它会给我这个错误。有人可以解释并告诉我解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:1)

这意味着p是null

Node p = right.previous;

必须返回null

看作right定义为head2,您必须查看头部2并找出head2.previous为空的原因。我想这是列表的开头或者什么。

您需要进行空检查,这样只有当它们不为空时,才会对下一个/上一个节点运行操作。