我想删除链接列表中传递给此方法的位置中的链接,但它无法正常工作。我认为我的代码非常糟糕,如果索引为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();
}
}
}
答案 0 :(得分:1)
错误是你 做类似的事情: 代替。这种方式对于索引等于0,你不会进入while循环,你可以进入count++;
,然后在之后检查它是否大于或等于索引你已经移动了迭代器。
if(index==count)
不满意,您将始终使用抛出异常<{p>>命中else
while(iterator!=_lastLink && index != count){
count++;
iterator=iterator._next;
}
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的第一个/头部引用,这是一个特殊情况。