美文网首页
删除链表中重复的结点

删除链表中重复的结点

作者: 李伟13 | 来源:发表于2020-04-29 21:10 被阅读0次

    题目描述

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    第一想法

    • 创建一个保存头的头节点n,用来返回
    • 一个保存不重复节点的节点p
    • 一个用来移动检测是否重复的节点q

    AC代码

    class Solution {
    public:
        ListNode* deleteDuplication(ListNode* pHead)
        {
            ListNode *q,*n;
            ListNode* p = new ListNode(1);
            p -> next = pHead;
            n = p;
            q = pHead;
            if(q == NULL && q -> next == NULL)
                return q;
            while(q){
                if(q -> next != NULL && q -> next -> val == q -> val){
                    while(q -> next != NULL && q -> next -> val == q -> val)
                        q = q -> next;
                    p -> next = q -> next;
                    q = q -> next;
                }
                else{
                    p = p -> next;
                    q = q -> next;
                }
            }
            return n -> next;
        }
    };
    

    相关文章

      网友评论

          本文标题:删除链表中重复的结点

          本文链接:https://www.haomeiwen.com/subject/brhowhtx.html