删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* node=new ListNode(0); // 新建头节点,这样原有链表的头结点的操作才和其他节点一样
ListNode* h=node; // 新建动态指针
node->next=head; // 新建的头结点连接到已有链表
while(h->next){
if(h->next->val==val){
h->next=h->next->next;
} // 循环判断,当节点值等于给定值时,删除,不需要做移动
else{
h=h->next;
} // 不等于给定值时才做移动
}
return node->next; // 注意!!不能是返回head,当输入[1],1 时,返回head是返回1,而正确答案是[]
}
};