删除链表的重复节点

  • 关键是如何确定新的头节点。可以先创建一个头节点,最后返回头节点的next域
public ListNode deleteDuplication(ListNode pHead)
    {
        if(pHead==null)
        {
            return null;
        }
        ListNode newHead = new ListNode(0);
        if(pHead.next==null)
        {
            newHead.next = pHead;
        }
        ListNode p = pHead;
        ListNode pre = newHead;
        while(p!=null)
        {
            ListNode q = p.next;
            if(q==null)
            {
                break;
            }
            if(p.val==q.val)
            {
                while(q.next!=null&&q.val==q.next.val)
                {
                    q = q.next;
                }
                p = q.next;
                pre.next = p;
            }
            else{
                pre.next = p;
                pre = p;
                p = p.next;
            }
        }
        return newHead.next;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容