/**
* 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 移动到下一个位置继续循环