移除链表元素.leetcode203 《数据结构入门到精通N1》

简介: 移除链表元素.leetcode203 《数据结构入门到精通N1》

image.png

image.png

思路

用prev,cur,next分别保存前一个节点,要删除节点,和后一个节点,然后free cur,让prev指向next。


代码

struct ListNode* removeElements(struct ListNode* head, int val){
    if(head==NULL)
    return NULL;
    struct ListNode* cur=head;
    struct ListNode* prev=NULL;
    while(cur)
    {
        //如果当前节点是需要删除的节点
        if(cur->val==val)
        {   //第一个是val
            //先保存下一个
            struct ListNode* next=cur->next;
            //如果当前节点是需要删除的节点
            //否则让当前节点的前趋节点链接next节点
            if(prev==NULL)
            {
                head=cur->next;
            }
            else//prev 连 next
            {
                prev->next=cur->next;
            }
            free(cur);
            cur=next;
        }
        else
        {
            //如果cur不是需要删除的节点,则更新prev,cur
           prev=cur;
           cur=cur->next;  
        }
    }
    return head;
}


相关文章
|
6天前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
16 1
|
4天前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
17 4
|
13天前
|
存储 Java
数据结构第三篇【链表的相关知识点一及在线OJ习题】
数据结构第三篇【链表的相关知识点一及在线OJ习题】
21 7
|
13天前
|
存储 安全 Java
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
18 3
|
11天前
|
算法 Java
数据结构与算法学习五:双链表的增、删、改、查
双链表的增、删、改、查操作及其Java实现,并通过实例演示了双向链表的优势和应用。
10 0
数据结构与算法学习五:双链表的增、删、改、查
|
5天前
|
存储
[数据结构] -- 双向循环链表
[数据结构] -- 双向循环链表
12 0
|
11天前
|
存储
探索数据结构:便捷的双向链表
探索数据结构:便捷的双向链表
|
11天前
|
存储
探索数据结构:单链表的实践和应用
探索数据结构:单链表的实践和应用
|
11天前
|
存储 机器学习/深度学习 算法
探索数据结构:入门及复杂度的解锁
探索数据结构:入门及复杂度的解锁
|
11天前
|
算法 Java
数据结构与算法学习六:单向环形链表应用实例的约瑟夫环问题
这篇文章通过单向环形链表的应用实例,详细讲解了约瑟夫环问题的解决方案,并提供了Java代码实现。
12 0