现在有一个单链表。链表中每个节点保存一个整数,再给定一个值val,把所有等于val的节点删掉。
给定一个单链表的头结点head,同时给定一个值val,请返回清除后的链表的头结点,保证链表中有不等于该值的其它值。请保证其他元素的相对顺序。
测试样例:
{1,2,3,4,3,2,1},2
{1,3,4,3,1}
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class ClearValue {
public:
ListNode* clear(ListNode* head, int val) {
// write code here
if(head==NULL)
return NULL;
while(head!=NULL&&head->val==val)
head=head->next;
if(head==NULL)
return NULL;
ListNode* p=head;
ListNode* q=head->next;
while(q)
{
if(q->val==val)
{
p->next=q->next;
q->next=NULL;
q=p->next;
}
else
{
p=q;
q=q->next;
}
}
return head;
}
};