0

2つの二重リンクリストがある場合、要素だけでなく、リストの1つのノードを変更して、同じ位置の合計が特定の数になるようにします。

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;
    }
}

サイズ=同じである両方のリストのサイズ。私は多くのことを試しましたが、p.next=rightおよびs.previous=rightで常にnullpointerexceptionが発生します。

なぜこのエラーが発生するのかわかりません。誰かがこれを解決する方法を説明して教えてもらえますか?

4

1 に答える 1

1

つまり、p はnull

Node p = right.previous;

戻ってくるに違いないnull

as が as としてright定義されhead2ているのを見て、head 2 を調べて、なぜhead2.previousが null であるかを解明する必要があります。リストの先頭か何かだと思います。

次/前のノードが null でない場合にのみ操作を実行するように、null チェックを入れる必要があります。

于 2013-03-14T16:41:50.280 に答える