题目描述:
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2 Output: 1->2
Example 2:
Input: 1->1->2->3->3 Output: 1->2->3
目的就是使用链表去重
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode *a,*b,*p;
p=head;
if(head==NULL){
return NULL;
}
a = b = NULL;
while(p->next != NULL){
a = p->next; //a = p的下一个节点
if(p->val == a->val){ //如果两个值相等
if(a->next != NULL){ //并且下一个值不为空
b = p->next->next; //令b等于p的下下个节点
p->next->next = NULL; //让p的下下个节点等于空
p->next = b; //p的下一个等于b
}
else{ //如果p的下一个为空
p->next = NULL; // 直接断开
break;
}
}else{ //两个连续的节点不相等 继续向后
p=a;
}
}
return head;
}