因为链表已经排序,所以重复的元素肯定是相邻的,如果链表的某个节点和它的下一个节点值相同,我们就把这个节点的下一个节点删除,直到遇到下一个不相同的节点,循环处理完所有的节点之后,链表中的重复元素就没有了。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head){
if (head == NULL) {
return NULL;
}
struct ListNode* p = head;
while (p && p->next) {
if (p->val == p->next->val) {
p->next = p->next->next;
} else {
p = p->next;
}
}
return head;
}