题目描述:
给定一个已排序的链表的头
head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
![]()
一、解题思路
用一个指针就可以解决:
当这个指针p->val==p->next->val时,我们直接让p->next=p->next->next->val就可以
同时注意head是空时直接返回NULL。
二、代码
代码如下(示例):
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head){
struct ListNode*p=head;
if(head==NULL)return NULL;
while(p->next!=NULL)
{
if(p->val==p->next->val)
{
p->next=p->next->next;
}
else{
p=p->next;
}
}
return head;
}