首页 > 其他分享 >代码随想录-链表

代码随想录-链表

时间:2023-03-13 22:00:09浏览次数:46  
标签:head ListNode cur val 代码 随想录 next 链表

本次记录代码随想录的链表部分的学习

一.移除链表元素

力扣题目链接(opens new window)

题意:删除链表中等于给定值 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,就删除这个节点

/**
 * 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) {
        ListNode* hp = new ListNode(0);
        hp->next = head;
        ListNode* cur = hp;
        while (cur->next != NULL && cur != NULL)
        {
            if (cur->next->val == val)
            {
                ListNode* tmp = cur->next;
                cur->next = cur->next->next;
                delete tmp;
            } 
            else
            {
                cur = cur->next;
            }
        }
        head = hp->next;
        delete hp;
        return head;
    }
};

上面是有头指针的情况,如果没有人为设置的头指针,那么应该怎么处理

 

 

标签:head,ListNode,cur,val,代码,随想录,next,链表
From: https://www.cnblogs.com/polang19/p/17213070.html

相关文章

  • go的泛型链表
    packagemainimport"fmt"funcMapKeys[Kcomparable,Vany](mmap[K]V)[]K{ r:=make([]K,0,len(m)) fmt.Printf("001%v,%T\n",r,r) fork:=rangem{ ......
  • 一百行代码实现简易版 ChatGPT | 社区征文
    最近,OpenAI的一款聊天机器人模型ChatGPT爆火,ChatGPT(全名:ChatGenerativePre-trainedTransformer),于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能......
  • python一行代码,有局限性
    classA:defadd(self,t):print(t,'走了a')classB:defadd(self,t):print(t,'走了b')host_names=A()ips=B()classIpChec......
  • 企业级无代码用做应急手段处理应急管理需求
    应急管理大到国家部委、省市级应急调控,小到社区、乡镇、园区等安全防控,承担着全体社会、人民的安全保障。基于企业级无代码构建的园区消防应急管理系统,实现主动化、全时段的......
  • PAT Basic 1025. 反转链表
    PATBasic1025.反转链表1.题目描述:给定一个常数 \(K\) 以及一个单链表 \(L\),请编写程序将 \(L\) 中每 \(K\) 个结点反转。例如:给定 \(L\) 为\(1→2→3→4→......
  • Dart利用注解生成代码
    个人博客:http://www.milovetingting.cnDart利用注解生成代码引入依赖dev_dependencies: source_gen:^1.2.6 build_runner:'>2.3.0<4.0.0'定义注解import'p......
  • 桌面文件又多又乱?教你用Python一键清理,只需20行代码轻松实现!
    我这个人比较懒,总是喜欢把收到的重要文件,或者比较紧急的文件放到桌面,久而久之,桌面或者文件夹越来越乱。不知道大家是不是像我一样的我滴妈呀,看着就很崩溃!之......
  • 使用Python训练好的决策树模型生成C++代码
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、决策树模型二、解析决策树模型1.模型分解2.构建决策二叉树3.生成代码3.1生成python代......
  • 代码随想录算法Day41 | 343. 整数拆分 , 96.不同的二叉搜索树
    343.整数拆分题目链接:343.整数拆分-力扣(LeetCode)思路动规五部曲,分析如下:确定dp数组(dptable)以及下标的含义dp[i]:分拆数字 i,可以得到的最大乘积为dp[i]。确......
  • 深入理解ES6--用模块封装代码
    用模块封装代码在模块顶部创建的变量不会自动被添加到全局共享作用域(模块顶部this的值为undefined),必须导出后,外部代码才可访问。浏览器中使用模块​​<script>​​的type属......