移除链表元素-力扣

一道基础的链表相关题目,在删除时对头节点进行单独处理。

cpp 复制代码
/**
 * 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 * t = head;
            head = head->next;
            delete t;
        }
        ListNode * cur = head;
        while(cur != NULL && cur->next != NULL){
            if(cur->next->val == val){
                ListNode * t = cur->next;
                cur->next = cur->next->next;
                delete t;
            }else{
                cur = cur->next;
            }
        }

        return head;
    }
};

另外一种写法是设置一个虚拟节点指向头节点,这样就无需对头节点进行单独处理,最后将head指向虚拟节点的下一个节点。

cpp 复制代码
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode* dummyHead = new ListNode(0); // 设置一个虚拟头结点
        dummyHead->next = head; // 将虚拟头结点指向head,这样方便后面做删除操作
        ListNode* cur = dummyHead;
        while (cur->next != NULL) {
            if(cur->next->val == val) {
                ListNode* tmp = cur->next;
                cur->next = cur->next->next;
                delete tmp;
            } else {
                cur = cur->next;
            }
        }
        head = dummyHead->next;
        delete dummyHead;
        return head;
    }
};
相关推荐
想睡hhh36 分钟前
c++进阶——哈希表的实现
开发语言·数据结构·c++·散列表·哈希
打鱼又晒网2 小时前
数据类型:List
数据结构·list
java程序员CC2 小时前
记录为什么LIst数组“增删慢“,LinkedList链表“查改快“?
数据结构·链表·list
.格子衫.3 小时前
015枚举之滑动窗口——算法备赛
数据结构·算法
爱coding的橙子6 小时前
每日算法刷题 Day3 5.11:leetcode数组2道题,用时1h(有点慢)
算法·leetcode
虾球xz8 小时前
游戏引擎学习第268天:合并调试链表与分组
c++·学习·链表·游戏引擎
Dream it possible!10 小时前
LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
c++·leetcode·位运算·哈希表·哈希集合
jiunian_cn12 小时前
【c++】异常详解
java·开发语言·数据结构·c++·算法·visual studio
康康这名还挺多14 小时前
鸿蒙HarmonyOS list优化一: list 结合 lazyforeach用法
数据结构·list·harmonyos·lazyforeach
Helibo4414 小时前
GESPC++六级复习
java·数据结构·算法