/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        if(head == nullptr)
            return head;
        auto p = head;
        while(p) {
            auto ne = p->next;
            if(ne && (ne->val == p->val)) {
                p->next = ne->next; // 如果出现重复的节点,删除重复节点
                continue; // 同时p节点保持原位置不动
            }
            // 否则p节点向前移动
            p = ne;
        }
        return head;
    }
};