删除双向链表中的第 i 个链接



我想删除链表上传递给此方法的位置中的链接,但是它不起作用。我认为我的代码真的很糟糕,如果索引为 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();
        }
    }
}

错误是你count++;,然后在你已经移动迭代器检查它是大于还是等于索引。
if(index==count)不满意,您将始终以投掷异常击中else

执行以下操作:

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

相反。这样,对于索引等于 0 时,您不会进入 while 循环,您可以进入if(index==count)

由于以下代码,当索引为 0 时,您会收到异常:

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

索引 = 0 的逐行逐步执行。立即将计数增加到 1,然后中断。因此,当您点击比较index==count时,它计算结果为0==1这是假的。因此,它转到 else 并引发异常。

尝试将if(count>=index)break;行放在第一位。

此外,您需要将第一个/头部引用更新为 0,这是一种特殊情况。

相关内容

  • 没有找到相关文章

最新更新