Remove all elements from a linked list of integers that have value val.
Example
Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6
Return: 1 –> 2 –> 3 –> 4 –> 5
题目意思:删除链表中值为val的结点
分析:这个题目比较简单,只需要注意几个特殊情况就可以了。
(1)头结点是要删除的结点
(2)链表中的结点全部要删除
思路:为了保证情况(1)出现时,代码的正确性,我们可以创建一个新的结点,它的下一个结点为头结点
代码:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if(head==NULL)
return NULL;
ListNode *pre=(ListNode*)malloc(sizeof(ListNode));
pre->next=head;
ListNode *node=pre;
while(node->next!=NULL)
{
if(node->next->val==val)
{
ListNode *tmp=node->next;
node->next=tmp->next;
delete tmp;
}
else
node=node->next;
}
return pre->next;
}
};