/**
* 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* node=head;
struct ListNode* next=node->next;
while(node){ //当node不是空的时候
if(next){//如果next也不是空
while(node->val==node->next->val){//如果当前节点的值等于下一个结点的值
node->next=node->next->next; //剔除下一个结点,直接链接当前结点到下一节点的下一节点
if(node->next==NULL){ //如果下一个结点的下一个结点是空,直接跳出
break;
}
}
}
node=node->next; //处理完一个节点后,取下一个结点做当前节点
if(node){ //如果node已经是空了,那么他就没有下一个结点,如果node不是空,才有下一个节点
next=node->next;
}
}
return head; //直接返回头结点,因为无论如何头结点都不会被删
}