LeetCode | 203. 移除链表元素
-
这里有两个思路我接下来看
-
当cur不等于6就一直找,找到了
6
就删除,但是能不能直接删除?不能,直接free了就找不到下一个了 -
这个时候我们就要定义
next
指针,和prev
指针,next
指针保存cur
的下一个地址,prev
保存cur
的前一个地址
代码如下:
c
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode* prev = NULL;
struct ListNode* cur=head;
while(cur != NULL)
{
if(cur->val == val)
{
struct ListNode* next = cur->next;
free(cur);
if(prev)
prev->next = next;
else
head = next;
cur = next;
}
else
{
prev = cur;
cur = cur->next;
}
}
return head;
}