一、题目描述
给你一个链表的头节点 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
输出:[]
三、参考代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* removeElements(struct ListNode* head, int val){
struct ListNode* cur = head;
struct ListNode* pre = NULL;
if(head == NULL){
return head;
}
else{
while(cur){
if(cur->val == val){
if(cur == head){
//头删
head = cur->next;
free(cur);
cur = head;
}
else{
//中间删除
pre->next = cur->next;
free(cur);
cur = pre->next;
}
}
else{
//进行下去
pre = cur;
cur = cur->next;
}
}
return head;
}
}