class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        // 空链表或只有一个节点的情况
        if (!head || !head->next) {
            return head;
        }
        
        ListNode *current = head;
        
        while (current && current->next) {
            // 如果当前节点与下一个节点值相同
            if (current->val == current->next->val) {
                // 跳过重复节点
                current->next = current->next->next;
                // 注意:这里不移动current,因为可能有多个连续重复
            } else {
                // 移动到下一个节点
                current = current->next;
            }
        } 
        return head;
    }
};