数据结构:删除有序链表的重复节点

描述

给定一个有序单链表(从小到大有序)的头结点head(该结点有值),删除链表中的重复元素,使链表中的所有元素都只出现一次。如当输入 {1,1,2} 时,经删除后,原链表变为 {1,2},对应的输出为 {1,2}。

代码实现

C语言代码:

 

struct ListNode* deleteDuplicates(struct ListNode* head ) {
    if(head == NULL)
        return head;

    struct ListNode *p;
    p = head;
    while(p->next != NULL)
    {
        if(p->val == p->next->val)
            p->next = p->next->next;
        else
            p = p->next;
    }

    return head;
}

 

图解代码

第一步:定义一个新结点,将其指向头结点

链表

第二步:当前结点的值与当前结点的下一个结点数值做比较:如果数值相等,直接将当前结点指向下一个结点的next结点;不相等的话继续遍历结点

链表链表

第三步:返回头结点

链表

    审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分