您的位置:首页 > 其它

删除排序链表中的重复数字 II

2016-01-14 00:11 316 查看
/**
* Definition of ListNode
* class ListNode {
* public:
*     int val;
*     ListNode *next;
*     ListNode(int val) {
*         this->val = val;
*         this->next = NULL;
*     }
* }
*/
class Solution{
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode * deleteDuplicates(ListNode *head) {
// write your code here
if (head==NULL||head->next==NULL){
return head;
}

ListNode *dummynode = new ListNode(0);
dummynode->next     = head;
ListNode *p         = dummynode;

while(p->next != NULL && p->next->next != NULL){
if (p->next->val == p->next->next->val){
int value = p->next->val;
p->next   = p->next->next->next;
while (p->next != NULL       && p->next->val == value ){
//p->next->val == value && p->next != NULL  这个顺序就不行
p->next = p->next->next;
}
}
else p = p->next;
}
return dummynode->next;
}
};
对于第二个while中的判断条件,&&左边必须先放入p->next!=NULL进行判断,否则若p->next==NULL,并且先判断p->next->val==value,这时系统会报错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: