-1

このメソッドに渡されたリンク リストの場所にあるリンクを削除したいのですが、うまくいきません。私のコードは本当に悪いと思います。インデックスが 0 の場合、エラーが発生すると思います。

public void remove(int index)
{
    DLink iterator=_firstLink;
    int count=0;

    while(iterator!=_lastLink)
    {
         iterator=iterator._next;
         count++;
         if(count>=index)break;
    }
    if(index==count)
    {
        iterator._previous = iterator._next;

        _size--;

    } 
    else
    {
        try 
        {
            throw new Exception("IndexOutOfBoundException");
        } 
        catch (Exception e1) 
        {
            e1.printStackTrace();
        }
    }
}
4

2 に答える 2

1

バグは、イテレータを既に移動したcount++;、それがインデックスより大きいか等しいかどうかを確認することです。 は満たされていないため、例外をスローして 常にヒットします
if(index==count)else

次のようにします。

while(iterator!=_lastLink && index != count){  
   count++;  
   iterator=iterator._next;  
}

代わりは。このように、インデックスが 0 の場合、while ループに入らず、入ることができます。if(index==count)

于 2013-09-08T18:39:43.263 に答える