0

リンクされたリストでどのノードが削除されたかを知る方法のような質問に出くわしました。例:いくつかのノードを含むリンクリストと、任意のノードを削除してリストを返す関数に渡されたリンクリストがあります.どのノードが削除されたかを知る方法はありますか.

私の見解によると、リンクされたリストを渡す前に、リストの各ノードのすべてのアドレスを含む配列を維持する必要があり、削除された後、どのノードが削除されたかを調べて見つける必要があります。

最善の方法は何ですか。

元:

public class GetDeletedNode{
    public static void main(String args[]){
        LinkedList<String> ll = new LinkedList<String>();
        ll.add("a");
        ll.add("b");
        ll.add("c");
        ll.add("d");

        ll = deleteArbitaryNode(ll);

        //write code to get know which node got deleted.
        //
        //code goes here


        for(String str:ll){
            System.out.println(str);
        }
    }

    private static LinkedList<String> deleteArbitaryNode(LinkedList<String> ll) {       
        //delete arbitary node
        Random random = new Random();
        ll.remove((int)((long)3*random.nextDouble()+1));
        return ll;      
    }
}
4

1 に答える 1

0

「public E remove(int index)」を呼び出すと、削除されたオブジェクトが提供されます。

したがって...次のようにコードを置き換え、削除されたノードを呼び出し元に返します。

public class GetDeletedNode{
    public static void main(String args[]){
        LinkedList<String> ll = new LinkedList<String>();
        ll.add("a");
        ll.add("b");
        ll.add("c");
        ll.add("d");

       // removes the random node and then returns it

        String removeObject  = deleteArbitaryNode(ll);

        for(String str:ll){
            System.out.println(str);
        }
    }

    private static T deleteArbitaryNode(LinkedList<T> ll) {       
        //delete arbitary node
        Random random = new Random();
        return ll.remove((int)((long)3*random.nextDouble()+1));      
    }
}

また、リスト ans で size() を使用するものにランダム ノード チューザーを作り直して、任意のサイズ リストで使用できるようにすることもできます。

于 2012-08-13T07:44:08.527 に答える