删除链表中等于给定值 val 的所有节点。
解题思路:为了方便操作,新建一个前继节点,比较该节点next的val与给定值的大小
需要注意的是当操作pdelete->next = pdelete->next->next后,pdelete不需要移动位置,因为它的后继变化了。
ListNode* Solution::removeElements(ListNode* head, int val)
{
ListNode *phead = new ListNode(0);
if(head == NULL)
{
return NULL;
}
phead->next = head;
ListNode *pdelete = phead;
while(pdelete->next != NULL)
{
if(pdelete->next->val == val)
{
pdelete->next = pdelete->next->next;
//pdelete = pdelete->next;
}
else
{
pdelete = pdelete->next;
}
}
return phead->next;
}