题解 | #删除链表中重复的结点#

删除链表中重复的结点

https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

struct ListNode* deleteDuplication(struct ListNode* pHead ) {
    // write code here
    if (pHead == NULL)
        return NULL;
    struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));
    head->next = pHead;
    struct ListNode *cur = head;
    struct ListNode *fre = NULL;
    int val = 0;

    while (cur->next->next)
    {
        if (cur->next->val == cur->next->next->val)
        {
            val = cur->next->val;
            fre = cur->next;
            cur->next = cur->next->next;
            free(fre);
        }
        else
        {
            if (cur->next->val == val)
            {
                fre = cur->next;
                cur->next = cur->next->next;
                free(fre);
            }
            else
                cur = cur->next;
        }
    }
    if (cur->next->val == val)
    {
        fre = cur->next;
        cur->next = NULL;
        free(fre);
    }
    
    cur = head->next;
    free(head);
    
    return cur;
}

全部评论

相关推荐

我是小红是我:学校换成中南
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务