我正在尝试编写将删除单个链接列表中的重复节点的代码。
删除的副本只会被删除,直到存储在下一个节点中的号码发生更改。
例如,如果输入列表是[ 0 0 0 0 1 1 0 0 0 3 3 3 1 1 0 ]
,
输出列表是[ 0 1 0 3 1 0 ]
。
我试图编写代码并尝试了多件事情。每次我调用函数时,它都会返回原始链表或仅返回原始头和原始尾。
我试图创建一个临时链表并将值存储在该列表中,但它不能正确返回。
我最近的尝试是在下面的代码片段中,只返回原始列表的头部和尾部。
需要删除链接列表中的重复节点
我的问题是,我该如何处理这段代码?我试图将其绘制出来并将其可视化,但它没有帮助。
我不是在寻找代码,只是写在正确的方向。
我认为我现在的代码已经是死胡同了,我可能不得不从头开始重新启动。
开始实现此代码以获得答案的最佳方法是什么?
public void squish() {
SListNode current = head;
SListNode iterator = current.next;
while (iterator != null){
if (current.equals(iterator)){
iterator = iterator.next;
} else {
if (current.next.equals (null)) {
break;
} else {
head.next = iterator;
current = iterator;
}
}
}
}
为什么不使用Set? – Egor
@Egor - 这可能是家庭作业.... – debracey
一套将删除所有重复。不只是连续的。而OP似乎需要实现他自己的家庭作业清单。 –