struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode *prev = NULL , *cur = head;
while(cur)
{
if(cur->val == val)
{
/*删除节点*/
if(cur == head)/*头删*/
{
head = cur->next;
free(cur);
cur = head;
}
else
{
prev->next = cur->next;
free(cur);
cur = prev->next;
}
}
else
{
prev = cur;
cur = cur->next;
}
}
return head;
}
注意:
要特别注意,如果删除的是第一个元素时,相当于头删,要特别去判一下。否则prev为NULL直接去接引用next是会程序崩溃的,