0

linkedList から最後のノードを削除して返そうとしています。これは Linkedlist クラスの一部です。私が書いた次のメソッドは、最後のノードを削除しません。理由を知っている人はいますか?

public int delete(){

    if(front==null){

        throw new NoSuchElementException(); 

    }else{

       ListNode current = front;

       while(current.next!=null){
          current = current.next;   
       }

       int delete = current.data;
       current = null;
       return delete;
    } 
}
4

6 に答える 6

2

カバーする必要がある 3 つの状況があります。

  1. リストにエントリがありません。通常、この場合は終了するだけですが、このように例外をスローしても問題ありません。
  2. リストにはエントリが 1 つしかありません。この場合、変数frontには値がありますが、front.nextになりますnull。この場合は に設定する必要がありfrontますnull
  3. 上記のいずれの場合も、最後から 2 番目のエントリの を に設定nextnullする必要があります。あなたはまだこれを行うことができていません。
于 2013-03-05T23:30:17.310 に答える
0

null ポインターを持つノードの前の「現在」を記憶し、そのノードの「次」ポインターを null に設定します。そうすれば、ローカル変数を更新するだけでなく、最新のノードへの参照を削除できます。

于 2013-03-05T23:29:29.857 に答える