面试题13:删除单链表中的重复元素

算法思路:

设立三个工作指针p,q,r,p用于遍历链表,q用于遍历p后面的链表,r保存需要删掉的结点。P遍历整个链表,p每到一个结点,q就从这个结点往后遍历,并与p比较,相同的话就删掉此结点。

功能函数:

/*     删除链表中的重复结点    */
Node *deleteReprodecedNode(Node *head)
{
    Node *p, *q, *r;
    p = head->next;
    while(p)  //p用于遍历链表
    {
        q = p;
        while(q->next)   //q用于遍历p后面的链表
        {
            if(q->next->data == p->data)
            {
                r = q->next;   //r保存需要删掉的结点
                q->next = r->next;  //需要删掉的结点的前后结点相连
                free(r);
            }
            else
                q = q->next;
        }
    }
    return head;
}

 

    原文作者:算法小白
    原文地址: https://www.cnblogs.com/kkdd-2013/p/5343073.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞