移除链表元素-力扣

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

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;
    }
};
相关推荐
Shirley~~4 分钟前
leetcode移除元素
javascript·数据结构·算法
普贤莲花11 分钟前
新生2026年1月20日---星期二(大寒)
程序人生·算法·leetcode
wen__xvn21 分钟前
基础数据结构第08天:栈(实战篇)
数据结构·c++·算法
wen__xvn1 小时前
基础算法集训第04天:选择排序和冒泡排序
数据结构·算法·leetcode
充值修改昵称1 小时前
数据结构基础:二叉树高效数据结构的奥秘
数据结构·python·算法
wen__xvn3 小时前
基础算法集训第01天:线性枚举
数据结构·c++·算法
nju_spy3 小时前
力扣每日一题 2026.1
算法·leetcode·二分查找·动态规划·最小生成树·单调栈·最长公共子序列
Remember_9933 小时前
【LeetCode精选算法】二分查找专题一
java·数据结构·算法·spring·leetcode·哈希算法
这就是佬们吗3 小时前
力扣---leetcode48
java·笔记·后端·算法·leetcode·idea
期末考复习中,蓝桥杯都没时间学了4 小时前
力扣刷题记录3
算法·leetcode·职场和发展