给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
ListNode* removeElements(ListNode* head, int val) {
//新建一个链表
ListNode dummy, *tail = &dummy;
auto p = head;
//开始遍历
while (p) {
//保存下一次循环的节点
ListNode* next = p->next;
//在新链表的尾部添加结点
if (p->val != val) {
tail->next = p;
tail = p;
}
//更新下一次节点
p = next;
}
//将尾节点设置为空
tail->next = nullptr;
//返回新链表
return dummy.next;
}