首页 > 代码库 > 剑指offer57 删除链表中重复的结点
剑指offer57 删除链表中重复的结点
错误代码:
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead == NULL) return NULL; if(pHead->next == NULL) return pHead; ListNode* current = NULL; if(pHead->val == pHead->next->val){ current = pHead->next->next; while(current->val == pHead->val && current != NULL) current = current->next; return deleteDuplication(current); } else{ current = pHead->next; pHead->next = deleteDuplication(current); } return pHead; } };
正确代码:
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead == NULL) return NULL; if(pHead->next==NULL) return pHead; ListNode* current = NULL; if(pHead->val == pHead->next->val){ current = pHead->next->next; while(current != NULL && current->val == pHead->val) current = current->next; return deleteDuplication(current); } else{ current = pHead->next; pHead->next = deleteDuplication(current); //return pHead; } return pHead; } };
可以看到不同点只是把current->val == pHead->val和current != NULL换了一下位置
错误的代码报错报的是:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
剑指offer57 删除链表中重复的结点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。