0

こんにちは、リンク リストの一部のリンクを削除しようとしていますが、リンクを削除する方法がわかりません。私がそれを実行すると、リンクはまだそこにあります。それが重要な場合は、関数をテストするためにjunitを使用しています。

これが私がこれまでに持っているものです。

public void removeAt(int k)
{
   Node w = first;
   int counter = 0; 
   if (k<0 ||  k >= size())
   {
       throw new  IndexOutOfBoundsException("Error ");
   }
   else 
   {
       while (w!= null)
       {
         counter++; 
         if (counter == k)
         {
            Node now = w.next; 
            w= now.next; 
         } 
         w=w.next;
       }
   }
   assert check();
}

助けてくれてありがとう

4

5 に答える 5

0

.nextノードを削除するには、ノードのフィールドを変更する必要があります。たとえば、リストからノードをw.next = w.next.next削除しw.nextます (もう何も指していないため)。null ポインターを確認してください (null の場合w.nextw.next.next例外がスローされます)。また、breakリストの残りをトラバースする必要がないため、if ブロックの最後にステートメントを追加します。

于 2013-04-26T02:52:13.420 に答える
0
if (counter == k){
    Node now = w.next; 
    w.next= now.next; 
    break;
}

これをテストします。

于 2013-04-26T02:55:16.847 に答える