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

时间:2013-09-08 18:31:21

标签: java linked-list

我想删除链接列表中传递给此方法的位置中的链接,但它无法正常工作。我认为我的代码非常糟糕,如果索引为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();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

错误是你count++;,然后在之后检查它是否大于或等于索引你已经移动了迭代器。
if(index==count)不满意,您将始终使用抛出异常<{p>>命中else

做类似的事情:

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

代替。这种方式对于索引等于0,你不会进入while循环,你可以进入if(index==count)

答案 1 :(得分:0)

由于此代码,您在索引为0时收到异常:

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

逐行逐行索引= 0.您立即将计数增加到1,然后中断。因此,当您点击比较index==count时,它会评估为0==1,这是错误的。所以,它转到else并抛出异常。

首先尝试放置if(count>=index)break;行。

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