0

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

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;

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

4

1 回答 1

1

这意味着 p 是null

Node p = right.previous;

一定要回来null

看到 asright定义为head2,您将不得不查看 head 2 并找出为什么head2.previous为 null。我想这是列表的开头或其他东西。

您需要进行空检查,以便仅在下一个/上一个节点不为空时运行操作。

于 2013-03-14T16:41:50.280 回答