Remove Linked List Elements

来源:互联网 发布:网络药店排名 编辑:程序博客网 时间:2024/06/05 04:45

dummy node的妙用

1.切记 用了dummy node以后 要head 从dummy开始,把他们连接起来

ListNode* dummy = new ListNode(0);dummy->next  = head;head = dummy;
2. 用temp然后delete temp 完成删除

class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        if (head == NULL)        {            return NULL;        }        ListNode* dummy = new ListNode(0);        dummy->next  = head;        head = dummy;        ListNode*temp = NULL;        while(head->next != NULL)        {            if (head->next->val == val)            {                temp = head->next;                head->next = head->next->next;                //head = head->next;                delete temp;            }            else            {                head = head->next;            }        }        return dummy->next;    }};

3. 其实这题的精髓还在使用 the address of the pointer

class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        if (head == nullptr)        {            return head;        }        ListNode** node = &head;        while ((*node) != nullptr)        {            if ((*node)->val == val)            {                ListNode* temp = *node;//这一步很关键                *node = (*node)->next;                delete temp;            }            else                node = &((*node)->next);        }        return head;            }};


0 0
原创粉丝点击