0

こんにちは、値を引数として渡すことにより、順序付けられたリストからノードを削除しようとしていますが、常に Null ポインター例外が発生します。以下は、私がこれを行うために使用している方法です。

public void sortedDelete(int social){
    if(sortedIsEmpty()){
        System.out.println("List is Empty");
    }
    else if(sortedSize() == 1){
        if(head.getData() == social)
            head = null;
    }else{
        SocialNode x = head;
        if(x.getData() == social)
            head = head.getNext();
        else{
            int count = 1;
            x = x.getNext();
            while(x!= null){
                if(x.getData() == social && x.getNext() != null){
                    sortedGet(count-1).setNext(sortedGet(count+1));
                }else if(x.getData() == social && x.getNext() == null){
                    sortedGet(count-1).setNext(null);
                }
                x = x.getNext();
                count ++;
            }
        }
    }
}

完全なクラス コードはこちら Java でのリストの実装

4

1 に答える 1

0

arrayList を使用するより良い方法ですが、あなたのケースでは arrayList の使用が許可されていないことがわかります。その場合、古い配列を削除して、元の配列よりも 1 小さいサイズの新しい配列を作成し、古い配列を新しい配列にコピーする必要があります。以下のコードを利用できます。

package com.rais;

public class ArrayExample {


    public static void main(String[] args) {
        int[] numbers = {1,2,3,4,5,6,7};

        numbers = remove(numbers, 4);

        for (int i : numbers) {
            System.out.println(i);
        }

    }

    public static int[] remove(int[] originalArray, int elemntToDelete)
    {
        for (int i = 0; i < originalArray.length; i++)
        {
            if (originalArray[i] == elemntToDelete)
            {
                int[] newArray = new int[originalArray.length-1];
                System.arraycopy(originalArray, 0, newArray, 0, i);
                System.arraycopy(originalArray, i+1, newArray, i, originalArray.length-i-1);
                return newArray;
            }
        }
        return originalArray;
    }

}
于 2013-02-11T03:37:01.873 に答える