给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2 输出: 1->2
示例 2:
输入: 1->1->2->3->3 输出: 1->2->3
//===============================================================================
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head) {
if(head == NULL || head->next == NULL)
{
return head;
}
struct ListNode *pcur=head, *pnext=NULL; //头结点为当前结点
while(pcur->next) //以此遍历后续所有元素
{
pnext = pcur->next; //pnext指向下一个结点
if(pcur->val == pnext->val) //如果当前结点与下一个结点重复
{
pcur->next = pnext->next; //前进一步
free(pnext); //删除重复结点
}
else
{
pcur = pcur->next;//前进一步
}
}
return head;
}