- 用一般方法实现
/**
3. Definition for singly-linked list.
4. struct ListNode {
5. int val;
6. struct ListNode *next;
7. };
*/
struct ListNode* deleteDuplicates(struct ListNode* head){
if(head==NULL||head->next==NULL)
{
return head;
}
struct ListNode* p=head;
while(p->next!=NULL)
{
if(p->val==p->next->val)
p->next=p->next->next;
else
p=p->next;
}
return head;
}
第一个if的判读条件不能互换,否则会报错
- 用递归算法来实现
struct ListNode* deleteDuplicates(struct ListNode* head){
if (head == NULL || head->next == NULL) {
return head;
}
// 删除头节点后面挂接的链表中的重复元素
head->next = deleteDuplicates(head->next);
// 头节点与后面挂接的链表中的节点值相同,则头节点也删除,否则不删除
return head->val == head->next->val ? head->next : head;
}