题目描述:
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例:
输入:head = [1,1,2]
输出:[1,2]
输入:head = [1,1,2,3,3]
输出:[1,2,3]
解题思路:
先判断链表是否为空。
让指针p指向表头,判断p->next->val是否和p->val 相等,相等就修改p->next,不相等就让指针p后移。
struct ListNode* deleteDuplicates(struct ListNode* head){
if(head == NULL)
{
return head;
}
struct ListNode *p;
p=head;
while(p->next)
{
if(p->val == p->next->val)
{
p->next = p->next->next;
}
else
{
p=p->next;
}
}
return head;
}