我正在研究关于Leetcode的问题,该问题旨在删除链表元素。
以下是问题:
- 删除链接列表元素
醇>实施例
鉴于:1 - > 2 - > 6 - > 3 - > 4 - > 5 - > 6,val = 6
返回:1 - > 2 - > 3 - > 4 - > 5
这是我的代码:
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* cur = head;
while(cur -> next != NULL && cur -> next -> val != val)
{
cur = cur -> next;
}
cur -> val = cur -> next -> val;
cur -> next = cur -> next -> next;
return head;
}
};
我提交代码时遇到了运行时错误。问题很简单,但由于我不熟悉C ++,我仍然无法找出错误的位置。你能帮帮我吗?
答案 0 :(得分:1)
您的代码崩溃,因为循环有两个退出条件:
您的代码假定它是第一个,而不是第二个条件,因此它会取消引用cur-> next-> val,这可能会导致崩溃。
您的代码还有其他问题: