LeetCode203—Remove Linked List Elements

来源:互联网 发布:南京大学 人工智能 编辑:程序博客网 时间:2024/06/05 12:59

原题

原题链接

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

Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

分析

链表删除,就是可能要删除多个节点,为此,删除节点之后另原指针指向被删节点的后一个节点。
另外,为了方便操作设置prev指针,为链表添加一个头节点。

代码

class Solution {    private:    void deleteNode(ListNode*prev,ListNode*&target)    {        prev->next=target->next;        delete target;        target=prev->next;    }    public:    ListNode* removeElements(ListNode* head, int val) {        ListNode* newHead=new ListNode(0);        newHead->next=head;        ListNode*target=newHead->next;        ListNode*prev=newHead;        while(target!=NULL)        {            if(target->val==val)            {                deleteNode(prev,target);            }            else            {                prev=prev->next;                target=target->next;            }        }        return newHead->next;    }};
1 0
原创粉丝点击