https://leetcode-cn.com/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]
输入:head = [], val = 1 输出:[]
输入:head = [7,7,7,7], val = 7 输出:[]
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* removeElements(ListNode* head, int val) { if (head==nullptr) return head; // easy mistake ignore输入就为空 while( head!=nullptr && head->val==val) head=head->next; //一直next有可能会到空 ListNode* headnew=head; ListNode* pre=head; while(head!=nullptr) { if (head->val!=val) { pre=head; head=head->next; } else { pre->next=head->next; head=head->next; } } return headnew; } };