struct ListNode* deleteDuplicates(struct ListNode* head) { if(head == NULL) return NULL; if(head->next && head->val == head->next->val) { /* Remove all duplicate numbers */ while(head->next && head->val == head->next->val) head = head -> next; return deleteDuplicates(head->next); } else { head->next = deleteDuplicates(head->next); } return head; }