现在有一个单链表。链表中每个节点保存一个整数,再给定一个值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
ListNode *curr = head, *pre = NULL;
while(curr){
if(val == curr->val){
if(curr == head){
head = head->next;
free(curr);
curr = head;
pre = head;
}else{
pre->next = curr->next;
free(curr);
curr = pre->next;
}
}else{
pre = curr;
curr = curr->next;
}
}
return head;
}
};