LeetCode | 203. 移除链表元素

LeetCode | 203. 移除链表元素

OJ链接

  • 这里有两个思路我接下来看

  • 当cur不等于6就一直找,找到了6就删除,但是能不能直接删除?不能,直接free了就找不到下一个了

  • 这个时候我们就要定义next指针,和prev指针,next指针保存cur的下一个地址,prev保存cur的前一个地址

代码如下:

c 复制代码
struct ListNode* removeElements(struct ListNode* head, int val) {
    struct ListNode* prev = NULL;
    struct ListNode* cur=head;
    while(cur != NULL)
    {
        if(cur->val == val)
        {
            struct ListNode* next = cur->next;
            free(cur);
            if(prev)
                prev->next = next;
            else
                head = next;
            cur = next;
        }
        else
        {
            prev = cur;
            cur = cur->next;
        }
    }
    return head;
}
相关推荐
小魏每天都学习8 分钟前
【算法——c/c++]
c语言·c++·算法
智码未来学堂42 分钟前
探秘 C 语言算法之枚举:解锁解题新思路
c语言·数据结构·算法
Halo_tjn1 小时前
基于封装的专项 知识点
java·前端·python·算法
春日见1 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
副露のmagic1 小时前
更弱智的算法学习 day59
算法
u0109272712 小时前
C++中的RAII技术深入
开发语言·c++·算法
青桔柠薯片2 小时前
数据结构:顺序表与链表
数据结构·链表
2401_832131953 小时前
模板错误消息优化
开发语言·c++·算法
金枪不摆鳍3 小时前
算法--二叉搜索树
数据结构·c++·算法
近津薪荼3 小时前
优选算法——双指针6(单调性)
c++·学习·算法