给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。. - 力扣(LeetCode)
在进行链表的操作时,要特别注意第一个节点和最后一个节点。在本题中只有第一个节点的操作是特殊的,因此可以增加一个虚拟头来统一操作。
在C/C++中删除的节点空间要进行释放。
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode *fakeHead=new ListNode(0,head), *p=fakeHead;
while(p && p->next){
if(p->next->val==val){
ListNode *tmp=p->next;
p->next=p->next->next;
delete tmp;
}
else{
p=p->next;
}
}
head=fakeHead->next;
delete fakeHead;
return head;
}
};