给出一个链表,我该如何粉碎两个以上连续且具有相同值的节点。 例如 1-> 3-> 3-> 3-> 5-> 4-> 4-> 4-> 5-> 5-> 2-> 5 第一步暗恋3 1-> 5-> 4-> 4-> 4-> 4-> 5-> 5-> 2-> 5 步骤2暗恋4 1-> 5-> 5-> 5-> 2-> 5 第三步暗恋5 返回1-> 2-> 5 我尝试下面的代码,但返回的1-> 5->-> 5-> 2-> 5
public void Crush()
{
Node prev = null, current = head;
if (head == null)
{
return;
}
prev = current;
while (current.next != null)
{
int k = 0;
while (current != null && current.next != null && current.data == current.next.data)
{
k++;
current = current.next;
}
if (k < 2)
{
// prev.next = current;
current = current.next;
}
else
{
prev.next = current.next;
current = current.next;
}
}
head = prev;
}
答案 0 :(得分:0)
1->3->3->3->5->4->4->4->5->5->2->5
^
1->5->5->5->2->5
^
删除4s时,它将创建新的5s。但是,前5个已经被跳过,因此只计2个5。
每当删除运行时,您都需要从头开始重新处理列表。