所以我有一个单链表的抽象数据类型,我的编译器在运行这部分测试代码时卡住了。
test.removeDuplicates();
System.out.println("removeDuplicates() has been run, check following output for counts of 3");
test.print();
我从给定列表中删除重复项的方法如下
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;
}
}
}
我认为这个 while while 循环遍历整个列表并通过使指针跳过值以删除重复值来取出重复值。
显然其中一个while循环没有终止,似乎我的最后一个值没有得到指向null的指针,但我不明白为什么。