一、题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次
示例 1: 输入: 1->1->2
输出: 1->2
示例 2: 输入:1->1->2->3->3
输出: 1->2->3
二、我的思路
从头遍历整个链表,借助一个cur指针指向链表的下一个元素,如果下一个元素与目前元素相等,就将该元素的指针指向下下个元素,再进行比较,直至最后一个元素结束,返回头指针。
三、代码实现
struct ListNode* deleteDuplicates(struct ListNode* head){
struct ListNode* cur = head;
while(cur !=NULL)
{
struct ListNode* cur1 = cur->next;
if(cur1 == NULL)
{
break;
}
else if(cur->val == cur1->val)
{
cur->next = cur1->next;
free(cur1);
continue;
}
cur = cur->next;
}
return head;
}