删除链表重复的元素

Posted seekwhale13

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除链表重复的元素相关的知识,希望对你有一定的参考价值。

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     struct ListNode *next;
 * ;
 */


struct ListNode* deleteDuplicates(struct ListNode* head)
    struct ListNode* cur = head;
   while((cur != NULL)&&(cur->next != NULL))
   
       if(cur->val == cur->next->val)
            cur->next=cur->next->next;
        else
            cur=cur->next;
   
    return head;



关键在于链表已按顺序排列,重复元素都为相邻,
指定 cur 指针指向头部 head
当 cur 和 cur.next 的存在为循环结束条件,当二者有一个不存在时说明链表没有去重复的必要了
当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个,这样就能达到去重复的效果
如果不相等则 cur 移动到下一个位置继续循环

以上是关于删除链表重复的元素的主要内容,如果未能解决你的问题,请参考以下文章

82. 删除排序链表中的重复元素 II--删除重复元素+链表值单一

Leetcode删除排序链表中的重复元素

Leetcode(83)-删除排序链表中的重复元素

基础结构:链表- 删除排序链表中的重复元素

83. 删除排序链表中的重复元素

删除有序链表中重复的元素