移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例 1:

输入:head = 1,2,6,3,4,5,6, val = 6

输出:1,2,3,4,5

示例 2:

输入:head = \[\], val = 1

输出:\[\]

示例 3:

输入:head = 7,7,7,7, val = 7

输出:\[\]

方法:传统求解

利用传统的方法遍历各个节点,判断节点的数据是否为VAL

方法:

struct ListNode* prev = NULL; //删除需要prev和cur

struct ListNode* cur = head;

//逻辑为:prev->next == next

新建两个结构体指针,通过prev->next == next串联起整个链表。

需要注意的是:此方法需要额外注意头删!(prev是空指针,不可以解引用)

头删时,head需要后移一个节点。

cpp 复制代码
struct ListNode* removeElements(struct ListNode* head, int val) {

   

    struct ListNode* prev = NULL;   //删除需要prev和cur

    struct ListNode* cur = head;

        //逻辑为:prev->next == next

    while(cur)

    {

        if(cur->val == val)

        {

            if(prev){

            prev->next = cur->next; //②         //prev最开始是空指针,不能解引用(->)

            free(cur);

            cur = prev->next;   // ①

            //通过①②语句,链接起整个链表;

            }

            else{

                head = cur->next;

                free(cur);

                cur = head;

            }




        }

        else

        {

            prev = cur;

            cur = cur->next;

        }

    }



    return head;

   

}
相关推荐
星空露珠3 小时前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
jinyishu_3 小时前
常见排序算法详解
数据结构·算法·排序算法
东华万里4 小时前
第31篇 数据结构入门:顺序表
数据结构·大学生专区
Vect__5 小时前
Go 数据结构 slice 深度剖析
开发语言·数据结构·golang
青山木5 小时前
Hot 100 --- LRU 缓存
java·数据结构·算法·leetcode·链表·缓存·哈希
剑挑星河月7 小时前
35.搜索插入位置
java·数据结构·算法·leetcode
闪电悠米7 小时前
力扣hot100-438.找到字符串中所有字母异位词-固定长度滑动窗口详解
linux·服务器·数据结构·算法·leetcode·滑动窗口·力扣hot100
人道领域7 小时前
【LeetCode刷题日记】51.N皇后
数据结构·算法
小陈的代码之路20 小时前
回文链表(LeetCode 234)C语言最佳解题思路
c语言·leetcode·链表
金融小师妹21 小时前
人工智能推演框架:非农降温信号如何重构黄金定价模型
数据结构·人工智能·机器学习·transformer