class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
//第一个节点为空
if (head == NULL)
return head;
//第一个就是val的结点或者后面是
while ( head->val == val&&head != NULL)
{
ListNode* temp = head;
head = head->next;
delete temp;
}
ListNode* pre = head;
while (pre != NULL && pre->next != NULL)
{
if (pre->next->val == val)
{
ListNode *p = pre->next;
pre->next = pre->next->next;
delete p;
}else {
pre = pre->next;
}
}
return head;
}
};
-
报错: 错误信息
"member access within null pointer of type 'ListNode'"指出在尝试访问一个空指针, -
解决思路: 应该是第一个
while的先后顺序问题。 -
调整
while条件: 在while (head->val == val && head != NULL)中,判断head != NULL应该放在前面,否则可能访问空指针的val。