粉碎链接列表节点

时间:2019-06-17 12:38:06

标签: data-structures linked-list

给出一个链表,我该如何粉碎两个以上连续且具有相同值的节点。 例如 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;
    }

1 个答案:

答案 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。

每当删除运行时,您都需要从头开始重新处理列表。