203链表-移除链表元素

Posted 孤注一掷 、

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了203链表-移除链表元素相关的知识,希望对你有一定的参考价值。

题目

链接:203. 移除链表元素 - 力扣(LeetCode)

思路

可以直接使用原来的链表来进行移除结点的操作。

需要区分删除头结点和删除非头结点

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) 
 *     ListNode(int x) : val(x), next(nullptr) 
 *     ListNode(int x, ListNode *next) : val(x), next(next) 
 * ;
 */
class Solution 
public:
    ListNode* removeElements(ListNode* head, int val) 
        //删除头结点
        while(head != NULL && head->val == val)
            ListNode* temp = head;
            head = head->next;
            delete temp;
        

        //删除非头结点
        ListNode* cur = head;
        while(cur != NULL && cur->next != NULL)
            if(cur->next->val == val)
                ListNode* temp = cur->next;
                cur->next = cur->next->next;
                delete temp;
            else
                cur = cur->next;
            
        
        return head;
    
;

也可以先设置一个虚拟头结点,再进行删除操作。

此时原链表的所有结点可以按照统一的方式移除。

代码:

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) 
 *     ListNode(int x) : val(x), next(nullptr) 
 *     ListNode(int x, ListNode *next) : val(x), next(next) 
 * ;
 */
class Solution 
public:
    ListNode* removeElements(ListNode* head, int val) 
        ListNode* dummyHead = new ListNode(0);
        //将虚拟头结点指向head,方便后面操作
        dummyHead->next = head;
        ListNode* cur = dummyHead;
        while(cur->next != NULL)
            if(cur->next->val == val)
                ListNode* temp = cur->next;
                cur->next = cur->next->next;
                delete temp;
            else
                cur = cur->next;
            
        
        head = dummyHead->next;
        delete dummyHead;
        return head;
    
;

 

以上是关于203链表-移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章

203. 移除链表元素

[JavaScript 刷题] 链表 - 移除链表元素, leetcode 203

[JavaScript 刷题] 链表 - 移除链表元素, leetcode 203

LeetCode ( 203 ) ---[移除链表元素]

LeetCode-203-移除链表元素

代码随想录算法训练营第三天 | 203.移除链表元素707.设计链表 206.反转链表