嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > 数据结构:删除有序链表的重复节点

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

关注+星标 不错过任何一次推送!

给定一个有序单链表从小到大有序的头结点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结点;不相等的话继续遍历结点

⏩ 第三步:返回头结点



往期推荐

● 

● 

● 

● 

● 

● 

● 

● 

扫二维码|关注我们

微信号|andyxi_linux

专注于嵌入式开发技术

分享、在看与点赞

只要你点,我们就是胖友