题目来源:https://leetcode.cn/problems/remove-linked-list-elements/
题目描述
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
题目示例
示例 1
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
示例2
输入:head = [], val = 1
输出:[]
示例3
输入:head = [7,7,7,7], val = 7 输出:[]
题目思路
情况一
情况二
代码实现
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;
}
end