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

class Solution {
public:
    /**
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        //判断重复->删除重复元素
        if(head==NULL || head->next == NULL)
            return head;
        if(head->next->next == NULL)
        {
            if(head->val==head->next->val)
            {
                head->next = NULL;
                return head;
            }
        }
        ListNode* xxx = head->next;
        ListNode* bef= head;
        while(xxx!=NULL)
        {
            ListNode* cur = xxx->next; //保存下一个节点数据
            if(bef->val == xxx->val)
            {
                xxx->next = NULL;         //将当前xxx节点释放
                bef->next = cur;
                xxx = cur;
            }
            else
            {
                bef = xxx;
                xxx = xxx->next;
            }
            
        }
        return head;
    }
};

这道题其实很简单,但是需要注意一下链表保存的节点,head节点是否是保存数据的节点,比如牛客中就是,也有一些head节点仅仅是指针。这里思路就是遍历链表,找到重复数字就把该节点删除就行了