/** 遍历相同的元素,然后删除它 * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ struct ListNode* deleteDuplicates(struct ListNode* head ) { // write code here struct ListNode * p1 = head; struct ListNode * p2; struct ListNode * save; if(head == NULL) return head; if(head->next == NULL) return head; p2 = p1->next; while(p1 != NULL ){ while(p2 != NULL){ if(p1->val == p2->val){ p1->next = p2->next; free(p2); p2 = p1->next; } else{ p2 = p2->next; } } p1 = p1->next; if(p1 != NULL) p2 = p1->next; else return head; } return head; }