思路:加入头节点,一切都好做。
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
ListNode() :next(NULL) {}
};
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode *pre,*r,*p,*t;
t = new ListNode();
t->next = head;
pre = t;
p = pre->next;
while (p)
{
if (p->val == val)
{
r = p;
pre->next = p->next;
p = p->next;
delete r;
}
else
{
pre = p;
p = p->next;
}
}
head = t->next;
return head;
}
};