移除链表元素
原题:
给你一个链表的头节点 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
输出:[]
提示:
- 列表中的节点在范围
[0, 104]内 1 <= Node.val <= 500 <= k <= 50
解题方法:
解法一:
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode *dummyNode=new ListNode(0,head);
ListNode *cur=dummyNode;
while(cur->next!=NULL)
{
if(cur->next->val==val)
{
ListNode* temp=cur->next;
cur->next=cur->next->next;
delete temp;
}
else
{
cur=cur->next;
}
}
return dummyNode->next;
}
};
做题小结:
本题主要是虚拟头节点的使用比较精髓,新建一个虚拟的头结点,这样就能保证之后删除节点都采用同样的方式,即cur->next=cur->next->next;否则的话,就需要对头结点等于val的情况单独进行处理了!
注意,关于判准还是自己好好写完,cur->next!=null就不要简写成cur->next了,因为经常会搞错要不要加!号
