我正在尝试编写代码来删除单链表中的重复节点。
删除的重复项只会被删除,直到下一个节点中存储的数字发生变化。
例如,如果输入列表是[ 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;
}
}
}
}