单链表总结:单链表中的必不可少的面试题

搞懂单链表常见面试题 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识和常见面试题,这些题有的来自 《剑指 offer》 ,有的来自《程序员代码面试指南》,有的来自 leetCode,不是很全面,但都具有一定代表性,相信大家看完以后一定跟我一样,对面试的时候算法题又多了一份自信。 什么是单链表 链表(Linked list)是一种常... 阅读详情

首先我们来总结一下所有所学的单链表认识:大家可以看看我以前的文章

  • 单链表的初步认识
    这篇文章主要讲解一些链表的基本认识,以及简单的代码模拟。
  • 单链表的顺序添加
    这篇文章主要讲解第一篇文章所提出的问题进行解答,以及思维。
  • 单链表的增删改查
    这篇文章主要用代码实现链表的增删改查。
    这三篇文章,需要你好好在自己的电脑上跑一遍,基本上你对单链表的认识就不仅仅局限在理论上了,在优化自己的代码的时候也知道如何下手了!

接着和大家分享几道单链表的面试题(新浪、百度、腾讯)思路分析和代码演示。

  1. 获取单链表节点的个数:
  2. 查找单链表中的倒数第k个节点 【新浪】
  3. 单链表的反转 【腾讯】
  4. 逆序打印链表 【百度】

1 获取单链表节点的个数:(这个题比较简单)
思路:使用while遍历节点,只要temp!=null就是有效节点

   // 面试题1:求单链表中有效节点的个数(不统计头节点)
    public static int getLength(HeroNode head){
        if (head == null){
            //链表为空,直接返回0
            return 0;
        }
        //添加一个辅助节点
        HeroNode temp = head.next;//不统计头节点
        int lenth = 0;
        while (temp != null){
            lenth++;
            temp = temp.next;
        }
        return lenth;
    }

2 查找单链表中的倒数第k个节点 【新浪面试题】
思路分析:
1 首先编写一个方法接受head(头节点)节点。同时也要接受k(index)参数
2 接着把链表从头到尾遍历一遍,得到有效位数size
3 最后我们从链表的第一个开始遍历到(size - k)就得到倒数第k个节点啦!

   // 面试题2:查找单链表中的到底第k个节点
    /**
     *
     * @param head 头节点,用于查找链表中的有效位数
     * @param index 倒数第k个节点
     * @return
     */
    public static HeroNode findLastIndexName(HeroNode head,int index){
        if (head.next == null){
            //链表为空
            return null;
        }
        //查找链表中的有效位数,节点的长度
        int size = 0;
        HeroNode temp = head.next;
        while(temp != null){
            size++;
            temp = temp.next;
        }
        // int size = getLength(head);//调用上面方法啊也可以
        //System.out.println(size);
        HeroNode cur = head.next;//重新做一个是因为temp此时是null 循环的时候会报空指针异常

        //对于index做一个校验
        if (index <= 0 || index > size){
            return null;
        }
        //我们使用for循环进行遍历到(size -index),表示temp.next后移几次
        for (int i = 0; i < size - index; i++){
            cur = cur.next;
        }
        return cur;
    }

3 单链表的反转;(这个题有点麻烦)
思路:实现效果如图1所示
1 首先先定义一个节点 reverseHead = new HeroNode();,用作当作存储取出来节点的容器
2 接着从头到尾遍历原来的链表,每遍历一个节点,都将其取出,放在新节点的前端(实现原理也就是把reverseHead.next = 取出的节点)【请看图二】
3 接着把reverseHead后面的数据放在原来链表上,也就是head.next = reverseHead.next

  • 图一
    在这里插入图片描述
  • 图二
    在这里插入图片描述
    public static void reverseList(HeroNode head){
        //首先判断 空节点和只有一个节点的链表不需要反转
        if (head.next == null || head.next.next == null){
            return;
        }
        //定义一个辅助变量,帮助我们遍历原来的链表
        HeroNode cur = head.next;
        HeroNode next = null;//指向当前节点cur的下一个节点
        HeroNode reverseHead = new HeroNode(0,"","");//reverseHead的头节点
        //遍历原来的链表,每遍历一个节点,将其取出,并放在新节点的最前端
        while ( cur!= null){
            next = cur.next;//暂时保存当前节点的下一个节点
            cur.next = reverseHead.next;//将cur下一个节点,放在reverseHead的最前端(第一个也就是头节点的下一个位置)
            reverseHead.next = cur;//将cur连接到新的链表上
            cur = next;//后移,完成遍历
        }
        //将head.next 指向 reverseHead.next ,完成链表的反转;
        head.next = reverseHead.next;
    }

4 逆序打印链表:两个方法
第一个方法:使用反转再打印【不建议,破坏了原本链表的数据结构】 第二个方法:利用栈的特点(先进后出)打印

  // 面试题四:从尾到头打印单链表(使用栈的先进后厨原则)
    public static  void  reversePrint(HeroNode head){
        if (head.next == null){
            return;//空链表
        }
        //创建一个栈,存入节点
        Stack<HeroNode> stack = new Stack<>();
        HeroNode cur = head.next;
        //遍历链表,并压入栈中
        while (cur != null){
            stack.push(cur);
            cur = cur.next;//后移遍历
        }
        //将栈中的节点打印出来,也就是出栈
        while (stack.size() > 0){
            System.out.println(stack.pop());
        }
    }

最后把 链表的节点类、和链表的管理类放在下面,学习编程还是需要动一动,加油!

/**
 * 定义HeroNode,每一个HeroNode都是一个节点
 */
class HeroNode{

    public int no;//编号
    public String name;//姓名
    public String nickName;//别称
    public HeroNode next;//指向下一个节点(域)

    //创建构造方法,初始化参数
    public HeroNode(int no,String name,String nickName){
        this.no = no;
        this.name = name;
        this.nickName = nickName;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", nickName='" + nickName + '\'' +
                '}';
    }

/**
 * 定义一个SingLinkedList来管理英雄人物,成为单链表
 */
class SingLinkedList{
    //初始化一个头节点,头节点不要动,动了就不找不到列表了(没有具体的数子)
    private  HeroNode head = new HeroNode(0,"","");

    //返回头节点
    public  HeroNode getHead() {
        return head;
    }

    //添加方法(把节点添加到这个singlinkedlist列表)
    //思路分析:先找到当前链表的最后一个节点,然后把最后节点的next域指向新的节点(不考虑排序的情况下)
    public void add(HeroNode heroNode){
        //1 需要一个辅助节点(temp)遍历,因为头节点不可以用
        HeroNode temp = head;
        //2 遍历
        while (true){
            // 当 next域是null的时候就是最后一个
            if (temp.next == null){
                break;
            }
            //没有找到,就接着移动查找
            temp = temp.next;
        }
        // 当退出while循环的时候,temp就是指向链表的最后(把新的节点添加进去)
        temp.next = heroNode;
    }

    //有顺序的添加操作
    public void addByOrder(HeroNode heroNode){
        // 需要一个辅助节点temp,因为头节点不能动,且是单链表,temp是位于添加操作的前一个节点
        HeroNode temp = head;
        boolean flag = false;//标志编号是否存在
        while (true){
            if (temp.next == null){//判断temp是不是最后一个节点
                break;
            }
            if (temp.next.no > heroNode.no){//位置找到了,就在temp后面插入
                break;
            }else if (temp.next.no == heroNode.no){//说明节点存在了
                flag = true;
                break;
            }
            temp = temp.next;//后移一位,相当遍历
        }
        if (flag){
            //编号存在,不能添加
            System.out.printf("插入英雄的编号%d存在,不能加入\n",heroNode.no);
        }else {
            // 可以添加,插入链表中
            heroNode.next = temp.next;
            temp.next = heroNode;
        }
    }

    //修改链表信息,但是编号no不能修改
    public void update(HeroNode newHeroNode){
        //首先判断链表是否为空
        if (head.next == null){
            //是:回复消息,链表为空不能修改
            System.out.println("链表为空不能修改");
        }
        //辅助接点
        HeroNode temp = head.next;
        boolean flag = false;//用于判断节点是否存在
        while (true){
            if (temp.next == null){
                //到了最后一个节点啦,用于终止循环的
                break;
            }
            if (temp.no == newHeroNode.no){
                //找到了这个节点
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if (flag){
            //找到了节点,赋值修改
            temp.name = newHeroNode.name;
            temp.nickName = newHeroNode.nickName;
        }else {
            //没找到节点
            System.out.printf("%d 的英雄编号不存在,不能修改,请先完成添加操作",newHeroNode.no);
        }
    }

    // 链表的删除操作
    public  void  delete(int no){
        // 找到一个辅助接点
        HeroNode temp = head;
        // 用于判断节点是否存在
        boolean flag = false;
        while (true){
            if (temp.next == null){
                //找到尾部节点啦
                break;
            }
            if (temp.next.no == no){
                //找到删除节点的前一个结点啦
                flag = true;
                break;
            }
            temp = temp.next;//后移一位,用于遍历
        }
        if (flag){
            //找到当前删除节点的前一个节点啦
            temp.next = temp.next.next;
        }else {
            //没有当前编号no的节点
            System.out.printf("没有找到编号为%d的节点,请先完成list遍历操作",no);
        }
    }

    //查询操作
    public void select(int no){
        HeroNode temp = head;
        boolean flag = false;
        while (true){
            if (temp.next == null){
                // 到位尾部节点
                break;
            }
            if (temp.no == no){
                //找到当前节点啦
                flag = true;
                break;
            }
            temp = temp.next;//后移
        }
        if (flag){
            //找到了,直接输出temp
            System.out.println(temp);
        }else {
            System.out.printf("没有找到编号为%d的节点,请先完成add操作\n",no);
        }
    }

    // 显示链表 思路:遍历
    public void list(){
        //0 判断链表是否为空,也就是head.next == null  head是头节点
        if (head.next == null){
            System.out.println("链表为空");
            return;
        }
        //1 同样需要一个辅助节点(temp)遍历,因为头节点不可以用
        HeroNode temp = head.next;
        //2 遍历
        while (true){
            //判断是否到最后了,也就是 next域 = null 也就是temp
            if (temp == null){
                break;
            }
            // 输出节点的信息
            System.out.println(temp);
            // 将下一个节点后移
           temp = temp.next;
        }
    }

}

如果本文对你对链表的认识有所帮助,请给我一个赞👍,是我最大的鼓励!

【面试题】-单链表反转 问题描述 将一个单链表反序输出,比如原单链表位1->2->3->4->NULL,反序输出后变为4->3->2->1->NULL 解题思路 阅读详情

相关推荐

多种单链表反转面试题总结

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/72026734冷血之心的博客) 总结下面试题中常见的单链表反转: 常规的反转单链表 以K个为一组反转单链表,最后不足K个节点的部分也反转 以K个为一组反转单链表,最后不足K个节点的部分不反转 1、反转单链表: 代码如下: /* * 翻转链表(...

冷血之心的博客 4777

单链表中的基本操作(详细代码图解+注释+算法步骤)

单链表中的基本操作(详细代码图解+注释+算法步骤)

Xiao_Ya__的博客 1万+

实战指南:基于ELK与Grafana构建天融信防火墙日志可视化看板

本文详细介绍了如何基于ELK与Grafana构建天融信防火墙日志可视化看板,包括环境准备、日志收集与解析配置、Elasticsearch存储优化、Grafana看板设计等关键步骤。通过实战案例和优化技巧,帮助用户高效处理天融信防火墙日志,实现安全态势的可视化监控与分析。

weixin_34246529的博客 226

单链表为什么要设置头结点

单链表为什么要设置头结点 转自https://www.cnblogs.com/youxin/p/3279391.html 链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。 这里有个地方要注意,就是对头指针概念的理解,这个很重要。“链表中第一个结点的存储位置叫做头指针”,...

blbq105的博客 1万+

Ad hoc网络路由协议概述4——按需路由协议(2)AODV协议 (Ad-hoc on-demand distance vector algorithm protocol)

AODV协议的基本流程。

weixin_42982240的博客 7705

Transformer-LSTM预测 | 基于Transformer-LSTM的多变量单步时间序列预测(Matlab)

Transformer-LSTM预测 | 基于Transformer-LSTM的多变量单步时间序列预测(Matlab)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 192

链表头结点的作用

1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL. 2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了单链表操作的统一性! 3、单链表加上头结点之后,无论单链表是否为空,头指针始终指向头结点,因此空表和非空表的处理也统一了,方便了单链表的操作,也减少了程序的复杂性和出现bug

追寻那一份.... 2895

扣子Coze工作流教程:采集公众号爆文,一键仿写自动发布

通过本教程,你学会了如何利用扣子(Coze)平台构建一个完整的公众号文章自动处理工作流。这个系统不仅能够大幅提升内容产出效率,还能通过AI二创保持内容新鲜度和原创性。最佳实践建议:初次使用时,建议先保存为草稿而不是直接发布,以便人工审核;从简单的工作流开始,逐步增加复杂度;定期检查工作流运行日志,优化节点配置。自动化内容创作是新媒体运营的未来趋势,掌握这项技能将使你在数字内容领域占据显著优势。

互联网架构师笔记 1238

算法总结之 删除无序单链表中重复出现的节点

算法总结之 删除无序单链表中重复出现的节点 给定一个无序单链表的头节点head,删除其中重复出现的节点 要求: 方法1 长度N 时间复杂度O(N) 方法2 额外空间复杂度O(1) 方法一 1 生成哈希表 头节点是不用删除的节点 所以首先将头放入哈希表 2 从头节点的下一个节点开始往后遍历 cur,检查是否在哈希表中,在则删除,...

art_code的博客 842

PyTorch生成式人工智能——VQ-VAE详解与实现

VQ-VAE (Vector Quantised-Variational AutoEncoder) 的核心思想就是将 VAE 的连续潜变量离散化。它通过学习一个码本 (Codebook) 来实现这一点,码本是一个包含有限个嵌入向量的字典。模型不是直接输出一个连续的潜在向量,而是从码本中找出与编码器输出最接近的嵌入向量来代替它。本节首先详细讲解 VQ-VAE 的技术原理,然后使用 PyTorch 从零开始实现 VQ-VAE 模型。

盼小辉丶的博客 3310

题解:洛谷 P14357 [CSP-J 2025] 拼数

等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。小 R 想知道,在他所有能拼成的正整数中,最大的是多少。你需要帮助小 R 求出他能拼成的正整数的最大值。小 X 给了小 R 一个字符串。输出一行一个正整数,表示小 R 能拼成的正整数的最大值。中的任意多个数字,按任意顺序拼成一个正整数。,表示小 X 给小 R 的字符串。#普及-# #其他排序#洛谷:[P14357。

团爸讲算法 1394

单链表——单链表的定义及基本操作(初始化、头插法尾插法建表、查找、插入、删除、判空等)

文章目录单链表的定义单链表上的操作初始化建立单链表头插法建立单链表尾插法建立单链表遍历单链表求单链表的长度查找操作按值查找按位查找插入操作删除操作完整代码及实例 单链表的定义   由于顺序表的插入删除操作需要移动大量的元素,影响了运行效率,因此引入了线性表的链式存储——单链表。单链表通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相邻的两个元素在物理位置上也相邻。   单链表的特点: 单链表不要求逻辑上相邻的两个元素在物理位置上也相邻,因此不需要连续的存储

薛定谔的猫的博客 10万+

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6113

面试题精选:单链表排序也能玩出花来

今天国庆节,祝大家中秋节快乐,顺便给大家拜个早年[狗头]。不过最近还在准备面试的同学们不要浪太狠,还是要好好学习的鸭。 单链表的排序在数据结构类的面试题中简直是集大成者,什么排序、链表、链表删除、添加…… 都能体现在单链表排序上,也非常考验候选者的编程基本功,思路说起来很简单,但能不能写出来又是另外一回事了。 有些人觉得面试面这种题意义不大,谁实际工作中会写过单链表的排序,不都是直接调Collections.sort()吗? 是,没错 是这样,也许对某些人而言,他会这道题和不会这道题对将来的工作产生不了任何

xindoo 4611

会话管理技巧——如何优化OpenClaw的上下文理解能力(2026进阶版)

本文深入探讨了OpenClaw系统的会话管理技术,重点介绍了会话定义、生命周期管理和上下文优化策略。会话管理包含会话ID、用户信息、状态等核心要素,以及创建、维护、终止和恢复四个生命周期阶段。上下文管理通过ContextManager类实现,支持创建、更新、消息添加和变量管理等功能,并采用历史记录机制确保会话连续性。ContextOptimizer类则负责应用优化规则,通过消息和变量压缩等技术提升系统性能。这些技术共同构建了OpenClaw强大的会话管理能力,为AI助手提供了高质量的交互体验基础。

博客 491

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

「Java 数据结构」:手撕单链表的增删改查及大厂面试题。

不难看出,倒数第二个结点也是顺序的第三个结点,也就是将倒数的结点转换成顺序结点,遍历链表找到顺序结点即可。将新的结点添加到链表的尾部,我们首先要遍历链表,找到链表的尾部,然后将最后一个结点的next指向新的结点,新结点的next指向NULL,这样就完成了链表的添加操作,这种每次添加到链表的尾部的操作称为尾插法。假设我们要删除中间这个结点,我们只需要将这个结点的上一个结点的next指向这个结点的下一个结点(也就是将第一个结点的next指向第三个结点)。此结点表示链表的头,不存放实际数据的。......

yzh2776680982的博客 1706

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

单链表知识、面试题汇总

单链表1、单链表介绍和内存布局1)链表介绍2)单链表介绍:2、单链表创建和遍历的分析实现1)单链表的应用实例2)单链表的创建示意图3)具体实现3、单链表按顺序插入节点1)思路分析2)具体实现4、单链表节点的修改1)具体实现5、单链表的删除和小结1)思路分析2)具体实现6、面试题1)单链表新浪面试题2)单链表腾讯面试题3)单链表百度面试题 1、单链表介绍和内存布局 1)链表介绍 链表:链表是有序的列表,但是它在内存中存储如下: 小结: ①链表是以节点的方式来存储,是链式存储 ②每个节点包含data域,

m0_52110974的博客 1066

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【经典面试题】单链表的常见面试题

单链表的常见面试题

lolly1023的博客 1424

单链表面试题总结

小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。我们选择的这个行业就一直要持续的学习,又很吃青春饭。虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。送给每一位想学习Java小伙伴,用来提升自己。

2401_84046577的博客 997

Java数据结构与算法-单链表 新浪,腾讯面试题详解

单链表常见的几个面试题 新浪,腾讯内部面试题目 题目分析 代码实现 测试用例 一,面试题目 统计链表中有效节点的个数(不含头结点)【新浪】 获取链表中倒数第K个元素【新浪】 单向链表的逆转【腾讯】 二,题目分析 第一题:我们可以获取链表的头结点后,然后进行遍历,设置一个变量进行计数,注意不要算上头结点。 第二题:我们可以在第一题的基础上,在获取到了链表的长度后,只需要考虑倒数第K个节点是...

大美妞的博客 9062

单链表的一些经典面试题

今天在一本试题书上看到一些特别好的单链表面试题,大家都知道单链表容易在头节点处进行删除,在尾节点处进行插入,下面我们就来讨论一下这些面试题:  (一)删除一个非尾节点:  题目要求的是要删除一个不是尾节点的节点,要删除一个节点我们首先得知道是那个链表,是哪个节点节点,找到并且删除它。所以我们设计的函数是这样的:void DelNotTailNode(SListNode* pos) { asser

如风 1397

java实现单链表,以及单链表相关面试题

一、数据结构和算法的重要性 目前程序员的门槛越来越高,对于已经参加工作的程序员来说,面试或者笔试被问到数据结构和算法已经屡见不鲜,尤其是一些一线的IT公司,数据结构和算法的面试题肯定会有,要知道“算法是程序的灵魂”。作为一名程序员,如果你不想一辈子停留在“码农”这样的标签里,那么就请花些时间去提升自己的数据结构和算法方面的知识吧。 二、数据结构 数据结构分为线性结构和非线性结构。 线性结构作为最常用的数据结构,其特点是数据元素中存在一对一的线性关系,线性结构有两种不同的存储结构,即顺序存储结构.

weixin_42066314的博客 258

面试题,单链表

部署双主MySQL集群:建立两个MySQL服务器,配置为主-主复制模式。这意味着每个服务器都可以处理写操作,并将更改同步到另一个服务器。这样做的目的是提高可用性,任何一个节点都可以在另一个节点故障时接管服务。使用自增主键:在数据库表中使用自增主键()作为唯一ID的生成器。当插入新记录时,MySQL会自动为这个字段分配下一个可用的值。全局ID生成服务:开发一个服务,该服务在两个MySQL服务器上运行,用于生成全局唯一ID。这个服务将负责执行插入操作,并获取自增主键的值作为ID。ID分配策略。

布说在见的博客 1356

面试题———————单链表

学习完单链表后趁热打铁做了几道面试题。(点击链接可以查看上一篇单链表学习) 以下1-5题难度依次递增,每道题的思路和实现过程将详细的展示。 求单链表中节点的个数 查找单链表中的倒数第k个节点【新浪面试题】 单链表的反转 【腾讯面试题】 从尾到头打印单链表【百度,要求方式1:反向遍历,方式2:Stack栈】 合并两个有序的单链表,合并之后的链表依然有序 01求单链表中节点的个数 02查找单链表中的倒数第k个节点【新浪面试题】 03单链表的反转 【腾讯面试题】 04从尾到头打印单链表【百度,要求方式1:反向

趁年轻不如拼一拼 186

单链表的合并算法_面试题精选:单链表排序也能玩出花来

今天国庆节,祝大家中秋节快乐,顺便给大家拜个早年[狗头]。不过最近还在准备面试的同学们不要浪太狠,还是要好好学习的鸭。 单链表的排序在数据结构类的面试题中简直是集大成者,什么排序、链表、链表删除、添加…… 都能体现在单链表排序上,也非常考验候选者的编程基本功,思路说起来很简单,但能不能写出来又是另外一回事了。 有些人觉得面试面这种题意义不大,谁实际工作中会写过单链表的排序,不都是直接调Collec...

weixin_39702649的博客 140
上一篇: 单链表学习3:模拟链表中的增删改查
下一篇: 使用Java详细讲解双向链表的
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值