java按顺序从单链表中删除重复项
所以我有一个0.1,3.0,4.5,-1,3.0,-10.0,3.0,3.0的列表 我应该在下面的代码之后得到一个0.1,3.0,4.5,-1.0,-10.0的列表
public void removeDuplicates()
{
if (head == null)
return;
Node iter = head;
while (iter != null)
{
Node currNode = iter;
while (currNode != null && currNode.next != null)
{
if (iter.value == currNode.next.value)
{
currNode.next = currNode.next.next;
nItem--;
}
currNode = currNode.next;
}
iter = iter.next;
}
}
我甚至用了一段时间,直到我修复并运行了它,然后意识到这里也出了问题
因为我现在得到0.1,3.0,4.5,-1.0,-10.0,3.0。为什么最后的3.0还在继续?我起初以为它可能是被圈起来的,但意识到我没有做过那种事。关于逻辑流程的建议
# 1 楼答案
在代码中,
while (currNode != null && currNode.next != null)
手术后的情况&&;运算符有
currnode.next != null
,实际上将忽略检查最后一个节点,因此将其删除编辑:
此外,您还必须更改行
if (iter.value == currNode.next.value)
从现在起,它也将尝试检查
currNode.next = null
的最后一个节点。因此,您必须将其更改为:总的来说,你应该从下一个节点开始检查,即:currNode=iter。接下来,保留上一个指针并更改检查相等的条件,如下所示: