力扣刷题:10-删除排序链表中的重复元素(83)

99 阅读1分钟

因为链表已经排序,所以重复的元素肯定是相邻的,如果链表的某个节点和它的下一个节点值相同,我们就把这个节点的下一个节点删除,直到遇到下一个不相同的节点,循环处理完所有的节点之后,链表中的重复元素就没有了。

/**
 * 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;
}