203. Remove Linked List Elements

问题描述:

Remove all elements from a linked list of integers that have value val.

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

 

解题思路:

需要注意的是,目标值可能会出现在任意的位置并且出现任意的数量。

用pre来标识目标节点前一个节点,初始化为NULL

即当pre为NULL是发现目标节点,我们需要改变头节点的位置为cur->next

 

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        if(!head) return head;
        ListNode* pre = NULL;
        ListNode* cur = head;
        while(cur){
            if(cur->val == val){
                if(pre) pre->next = cur->next;
                else head = cur->next;
                cur = cur->next;
                continue;
            }
            pre = cur;
            cur = cur->next;
        }
        return head;
    }
};

 

posted @ 2018-07-31 06:27  妖域大都督  阅读(85)  评论(0编辑  收藏  举报