203. Remove Linked List Elements

来源:互联网 发布:珠海知未科技 编辑:程序博客网 时间:2024/06/07 05:02

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相等直接把后面接到前面就可以了。

需要注意的地方是,一开始没有考虑到头结点的处理,后来发现直接返回head的话,像example中一样,如果val=1的时候是没办法处理的。

所以,就要用一个dummy指针啦!

我真是机智呢!♪(^∇^*)

class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        if(!head) return NULL;        ListNode* dummy;        dummy->next=head;        ListNode* h=head;        ListNode* pre=dummy;        while(h){            if(h->val==val){                pre->next=h->next;            }            else{                pre=pre->next;            }            h=h->next;        }        return dummy->next;    }};


0 0