自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 【C++篇】STL的关联容器:unordered_map和unordered_set(下篇):用一个哈希表同时封装unordered_map和unordered_set

本文介绍了如何基于哈希表封装实现unordered_map和unordered_set的核心技术要点。主要内容包括:(1)通过模板参数控制,使同一个哈希表能同时适配K模型(set)和KV模型(map);(2)通过仿函数KeyOfT提取键值,解决pair类型比较问题;(3)迭代器实现的关键点,包括维护哈希表指针以支持跨桶遍历。文中给出了哈希表源码、模板参数调整方案、仿函数设计以及迭代器operator++的具体实现逻辑,展示了STL关联式容器底层数据结构的封装技巧。

2025-07-28 22:09:10 450

原创 【C++篇】STL的关联容器:unordered_map和unordered_set(上篇):哈希表的模拟实现

本文介绍了C++中unordered系列关联式容器(unordered_map、unordered_set等)与哈希表的相关知识。主要内容包括:1. unordered容器与map/set的区别,如无序性、底层哈希表结构及性能优势;2. 哈希表原理,包括哈希函数设计(直接定址法、除留取余法)和冲突解决方法(开放定址法、链地址法);3. 重点模拟实现了基于线性探测的哈希表,详细讲解了节点结构、插入扩容机制及查找删除操作。文章通过代码示例展示了哈希表的核心实现,对比了不同冲突解决策略的优缺点,为理解STL哈希容

2025-07-27 16:45:38 394

原创 【C++篇】STL的关联容器:map和set(下篇):用一颗红黑树同时封装出map和set

本文介绍了如何将红黑树封装为map和set的底层实现,主要包括:1)通过模板参数适配KV模型和K模型;2)为红黑树添加仿函数提取键值;3)实现红黑树的迭代器。通过模板参数修改使红黑树可同时支持map和set,使用仿函数解决pair比较问题,并详细说明了迭代器的实现思路,包括解引用和指针操作符的重载。这使得红黑树能够作为通用底层结构支持map和set的功能需求。

2025-07-26 18:22:09 892

原创 【C++篇】平衡二叉搜索树(下篇):红黑树详解

红黑树是一种自平衡二叉搜索树,通过颜色标记和旋转操作保持近似平衡。其核心规则包括:根节点为黑色、无连续红色节点、各路径黑色节点数相同。插入新节点时默认为红色,通过判断叔叔节点颜色进行平衡调整:若为红色则变色处理,若为黑或不存在则旋转后变色。验证红黑树需检查二叉搜索树性质和颜色规则。相比AVL树,红黑树牺牲严格平衡换取更高插入/删除效率,适合频繁修改场景。

2025-07-21 16:48:39 540

原创 【C++篇】平衡二叉搜索树(上篇):AVL树详解

AVL树是一种自平衡二叉搜索树,通过平衡因子确保左右子树高度差不超过1。本文介绍了AVL树的概念、节点定义和插入操作,重点分析了四种旋转情况:左旋、右旋、右左双旋和左右双旋。插入时先按二叉搜索树规则插入节点,再通过调整平衡因子和旋转操作保持平衡。单旋处理直线型不平衡,双旋处理折线型不平衡。旋转操作需维护搜索树性质,更新父指针和平衡因子,最终降低子树高度使其重新平衡。AVL树通过旋转保证高效查找,时间复杂度稳定在O(logN)。

2025-07-20 10:57:56 866

原创 【C++篇】STL的关联容器:map和set(上篇)—— map和set的介绍和使用

摘要: 本文介绍了C++ STL中的关联容器set和map,两者均基于红黑树实现,具有有序性、唯一性和高效查找的特性。set为单键(K模型),主要用于排序和去重;map为键值对(KV模型),实现映射功能。重点解析了set的count、lower_bound等接口,以及map的插入操作和[]运算符的底层逻辑(通过insert实现访问或插入)。此外,提及了multiset和multimap允许重复键值的场景。最后,建议通过LeetCode题目实践巩固应用。

2025-07-15 16:03:25 856

原创 【C++篇】二叉树进阶:二叉搜索树

本文介绍了二叉搜索树的概念、操作实现及应用。二叉搜索树是一种特殊的二叉树,具有左子树节点值小于根节点、右子树节点值大于根节点的特性,其中序遍历结果为升序序列。文章详细讲解了二叉搜索树的查找、插入和删除操作的递归与非递归实现方法,重点分析了删除节点时的三种情况处理。此外,还介绍了二叉搜索树在K模型中的应用,如单词拼写检查等场景。通过C++实现,展现了二叉搜索树的高效增删查特性及其在实际问题中的灵活应用。

2025-07-11 22:20:45 617

原创 【C++篇】多态:从基础到虚函数与重写原理揭秘

摘要 本文深入探讨了C++中的多态特性,从概念定义到底层实现原理进行系统讲解。首先介绍了多态的定义和构成条件,强调继承是前提,需满足虚函数重写和基类指针/引用调用两个关键条件。详细解析了虚函数、虚函数重写(覆盖)的概念,并说明协变和析构函数重写两种特殊情况。通过内存模型分析虚表机制,揭示多态的实现原理:不同对象调用相同函数时通过虚表查找对应的虚函数实现。最后通过实验验证虚表存储位置,并对比静态绑定与动态绑定的区别。文章包含丰富代码示例和内存图示,帮助读者全面理解多态这一重要面向对象特性。

2025-07-05 11:46:41 784

原创 【C++篇】探究C++继承的底层:从基础到菱形虚拟继承

继承机制解析 面向对象编程中,继承是三大核心特性之一。本文深入探讨了C++中的继承机制,从基础概念到复杂应用,帮助读者全面理解继承的底层原理。 1. 继承基础 概念:继承允许派生类复用基类的特性并进行扩展 访问控制:继承方式(public/protected/private)与成员访问限定符共同决定最终访问权限 对象转换:派生类对象可赋值给基类对象/指针/引用(切片操作) 2. 关键特性 作用域规则:基类与派生类各自独立作用域,同名成员会隐藏 默认成员函数:派生类构造/析构/拷贝等操作需正确处理基类部分 特

2025-06-29 15:34:08 810 2

原创 【C++篇】模板进阶:依赖类型、特化等高级技巧

本文深入探讨C++模板的高级用法,包括依赖类型、非类型模板参数、模板特化等关键概念。首先解析typename如何解决依赖类型问题,明确编译器处理模板嵌套类型的机制。其次介绍非类型模板参数的使用限制(常量、整型)及实际应用场景。重点讲解模板特化的两种形式:函数模板特化(虽不推荐但需掌握)和类模板特化(全特化与偏特化),通过代码示例展示如何为特定类型提供定制化实现。最后简要提及模板分离编译的要点,为读者构建完整的模板知识体系,提升泛型编程能力。

2025-06-25 22:08:35 834

原创 【C++篇】STL适配器(下篇):优先级队列与反向迭代器的底层奥秘

摘要 本文详细讲解了C++优先级队列(priority_queue)和迭代器的原理及模拟实现。主要内容包括: 优先级队列: 本质是基于堆的数据结构,默认使用vector容器和less仿函数实现大堆,可通过greater仿函数切换为小堆。 核心操作(pop、push)依赖堆的向下调整和向上调整算法,通过仿函数控制大小堆的比较逻辑。 仿函数: 通过重载operator()实现类对象像函数一样调用,替代C语言的函数指针,更灵活地封装比较逻辑(如Less/Greater)。 反向迭代器: 通过适配器模式复用正向迭代

2025-06-03 16:36:01 871 1

原创 【C++篇】STL适配器(上篇):栈与队列的底层(deque)奥秘

STL适配器详解:容器适配器(stack与queue) 摘要 本文深入讲解C++ STL中的容器适配器,重点介绍stack和queue的实现原理及使用方法。主要内容包括: 适配器概念:基于现有容器实现特定接口的设计模式 容器适配器:stack(后进先出)、queue(先进先出)和priority_queue stack详解:接口说明、默认deque容器及模拟实现 queue详解:接口说明、使用限制及模拟实现 实现差异:stack和queue对适配容器的不同要求(如vector不能用于queue) 通过阅读本

2025-06-02 16:56:29 1046 1

原创 【C++篇】STL中list的奥秘与实现解析

摘要 本文深入探讨了C++ STL中list的使用与模拟实现。首先介绍了list的基本使用方法,包括构造、迭代器操作、容量查询和元素访问等接口。然后重点讲解了list的模拟实现过程,将其分为结点类、迭代器类和list类三部分进行封装。 在实现层面: 结点类封装了链表节点的前驱指针、后继指针和数据值; 迭代器类通过运算符重载模拟了连续访问的语义,统一了接口; list类负责管理整个链表结构。 文章还分析了封装迭代器的必要性:由于链表物理存储不连续,迭代器需要隐藏底层指针操作,提供类似vector的连续访问体验

2025-05-26 05:00:00 831

原创 【C++篇】揭秘STL vector:高效动态数组的深度解析(从使用到模拟实现)

本文详细介绍了C++中vector的使用及其底层实现,重点讲解了vector的常用接口、内存管理以及模拟实现中的常见问题。文章首先介绍了vector的基本概念和特性,包括其动态数组的特性、内存分配策略以及与其他容器的比较。接着,详细讲解了vector的构造函数、迭代器、容量管理、增删查改等常用接口的使用方法,并提供了代码示例。在模拟实现部分,文章深入剖析了vector的底层实现,重点讨论了reserve函数中的浅拷贝问题,并提供了解决方案。通过分析memcpy在自定义类型中的局限性,文章指出使用赋值重载可

2025-05-19 18:06:51 1081

原创 【Linux修炼手册】Linux开发工具的使用(二):gcc/g++与make/makefile

本文介绍了Linux环境下常用的编译工具gcc/g++以及项目自动化构建工具make/Makefile的使用方法。gcc主要用于C语言编译,g++则用于C++,二者使用原理相同。编译过程分为预处理、编译、汇编和链接四个阶段,通过不同选项控制生成不同类型的中间文件。文章还详细说明了静态链接与动态链接的区别及优缺点,静态链接将库代码直接嵌入可执行文件,而动态链接则在运行时加载共享库。此外,文章介绍了Makefile的基本结构和自动化推导功能,如何通过伪目标.PHONY实现强制重新编译,以及如何使用自动变量简化M

2025-05-12 05:30:00 1855

原创 【Linux修炼手册】Linux开发工具的使用(一):yum与vim

Linux的yum、vim工具的简单使用指南

2025-05-08 21:05:30 1312

原创 【Linux修炼手册】Linux权限管理

一件事情是否允许你做权限认证的是身份(权限与“人(身份/角色)”有关)权限=具体用户+身份/角色用户分为root和普通用户身份分为:拥有者(u):文件和文件目录的所有者所属组(g):文件和文件目录的所有者所在的组的用户存在意义:可以给部分人给予特殊权限其他人(o):其它用户所有人(a)权限与事物的“属性”有关文件的属性:可读r、可写w、可执行x文件属性:为什么没有指定其他用户呢?除了拥有者和所属者后,剩余的就是其他用户了,所以没必要再去指定。

2025-05-06 15:51:23 835

原创 【Linux修炼手册】Linux下的基本指令

简要介绍Linux的常用指令

2025-04-28 21:07:57 1425 4

原创 【C++篇】string类的终章:深浅拷贝 + 模拟实现string类的深度解析(附源码)

本文将通过一个自定义的字符串类实现(zhh是一个我自定义的作用域),深入探讨string类的核心设计思路与实现细节,以及为什么在拷贝构造和赋值运算符重载的实现需要用深拷贝。该代码模拟了标准库的一些核心功能,包括动态内存管理、迭代器、常用操作符重载等。同时也借此对深浅拷贝进行实际上的应用。源码在完整末尾深拷贝是管理动态资源的类的必备实现,确保对象间的独立性。浅拷贝仅适用于不涉及资源所有权的简单数据类型(如intdouble在C++中,默认拷贝构造函数和赋值运算符是浅拷贝。

2025-04-21 18:42:04 1187 22

原创 【C++篇】与STL的初见:string类的主要接口简介

接下来我们开始STL的学习之旅,进一步感受C++的给世界带来的编程盛宴。了解我们为什么要学习string类了解标准库中的string类有哪些功能可以得心应手地使用string类声明:本文只介绍string类中我们常用的功能。建议先大致阅读string类文档,大概知道string类中有哪些内容即可:🖱string下文中会讲解string类常用的部分接口。有些我会直接提供接口文档链接,点击进入即可。还有些我会提供图片目录,进入我给出的string类文档对应查找即可。

2025-04-15 14:14:29 1043

原创 【C++篇】C++模板初阶:从泛型编程到函数模板与类模板的全面解析

在C++编程中,重复编写功能相同但类型不同的代码既低效又容易出错。例如,实现一个通用的交换函数时,若为每种类型都重载一次,代码将臃肿且难以维护。C++模板技术应运而生,它通过“泛型编程”的思想,允许开发者定义类型无关的代码框架,由编译器自动生成具体类型的版本。本文将深入浅出地解析泛型编程的核心思想函数模板的原理与使用技巧,以及类模板的定义与实例化方法,帮助你掌握这一提升代码复用性与维护性的利器。返回值类型 函数名(参数列表){}

2025-04-10 13:35:47 886 4

原创 【C++篇】深入解析C/C++内存管理:从原理到实践

哈喽!我是我想吃余!我们来进入今天的学习吧!😎在C/C++开发中,内存管理是开发者必须掌握的核心技能之一。无论是手动分配释放内存的灵活性,还是由此带来的内存泄漏风险,这一领域始终充满挑战。如果你对动态内存管理有一定的了解,那么你是否曾困惑于malloc与new的区别?是否因内存泄漏导致程序崩溃却无从排查?又是否在面试中被问及“堆与栈的区别”却难以系统回答?本文以C/C++内存管理为核心,从内存分布、动态内存操作、new/delete的实现原理,到定位new。

2025-04-08 16:31:15 749

原创 【C++篇】类与对象(下篇):深入解析初始化列表、静态成员、友元与内部类的高级实践

大家好呀!我是我想吃余,一名正在学编程的小白。上篇和中篇我们已经学习了类和对象的基础知识和用法,本篇我们围绕C++面向对象编程中的高阶主题展开,结合实例代码和关键知识点,系统讲解初始化列表、explicit关键字静态成员的特性与使用场景、友元函数与友元类的设计技巧,以及内部类的独特作用。通过对比构造函数体赋值与初始化列表的差异,剖析static成员在资源管理中的妙用,并探讨友元如何有限突破封装以简化操作。助力开发者掌握C++面向对象编程的核心精髓。初始化列表十分重要,需要重点掌握!

2025-04-07 19:51:11 871

原创 【C++篇】类与对象(中篇) 解密C++类的核心:六大默认成员函数详解与避坑指南

大家好呀,我是我想吃余😁!这次我们学习的内容非常非常重要🔑,如果本章内容懵懵懂懂的话,那么将导致你无法写出一个正确的类,更别说写一个C++程序了。因此,今天的内容务必理解透彻。默认成员函数是C++的门槛,因为其内容较为抽象复杂,导致C++难学的名头流传至今😂。其实并没有这么夸张,根本不必畏惧,学完之后你会感觉:也就那回事!翻过这座大山,我们将正式踏入C++的旅程🛫本文共有9000余字(鬼知道我写了多久😪),干货满满。建议读者选择宽裕的时间学习哦🥰。

2025-04-05 13:26:40 916

原创 【C++篇】类与对象(上篇):从面向过程到面向对象的跨越

大家好,我是“我想吃余”,很高兴你能和我一起进入到C++的学习中,我会将我的学习过程中的宝贵经验不遗余力的输入到文章中,希望可以帮助到你的学习。本文涵盖了从面向过程与面向对象的区别,到类的定义、访问限定符、封装、作用域、实例化、对象大小计算,以及this指针等内容。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的。

2025-03-29 18:14:14 892 6

原创 【C++篇】C++入门基础(二)

话接上回,本文主要内容是讲解引用、内联函数、auto关键字、及指针空值nullptr的知识。其中引用尤为重要。基本任何场景都可以用引用传参谨慎用引用做返回值,出了函数作用域,如果对象不存在了(如在栈帧中被销毁了),就不能用引用返回,还在就可以使用引用返回auto作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得return 10;auto b = a;return 0;是一个求数据类型的函数。

2025-03-28 18:38:01 1240 5

原创 【C++篇】C++入门基础(一)

C++是在C的基础上发展的语言,其初心本是弥补C的不足,不想却成了一门新的语言。C++兼容C的所有语法。本文主要内容是讲解C++较C所补充的语法内容。声明:本文学习需要C语言的基础,因为C++语法中与C重复的内容不会赘述。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型。如:int val;命名空间可以嵌套int a;int b;int c;int d;

2025-03-27 14:38:25 975

原创 【初探数据结构】归并排序与计数排序的序曲

本文主要内容是归并的递归和非递归以及计数排序的实现方法。文章会提及很多容易忽视的易错点(大多是我自己踩过的坑😂),这是我在学习这块内容时获取的教训和宝贵经验。因为自己淋过雨,希望能为你们撑把伞!共勉!😁算法时间复杂度空间复杂度稳定性适用场景归并排序O(n log n)O(n)稳定大数据量、需稳定排序计数排序O(n + k)O(k)稳定小范围整数、非比较排序希望这篇文章对你有所帮助🌹🌹🌹。

2025-03-26 21:44:32 1157 4

原创 【初探数据结构】快速排序的四种实现方式(Hoare,挖坑,前后指针,非递归)

快速排序是一种高效的分治排序算法,核心思想是通过选定基准元素将数组划分为两部分,递归排序子数组。Hoare法挖坑法前后指针法及非递归实现,并分析其优缺点。快速排序时间复杂度ON∗logNO(N*logN)ON∗logNHoare法适合教学和理解分治思想。挖坑法在减少交换次数时表现优异。前后指针法代码简洁,适合扩展。非递归实现解决了递归栈溢出的问题,适合工程应用。gitee源码理解每种方法的核心逻辑和细节,才能在实际应用中灵活选择最优方案。

2025-03-25 10:12:11 896 2

原创 【初探数据结构】详解三大经典排序算法(选择/堆/冒泡)

特性选择排序堆排序冒泡排序时间复杂度O(n²)O(n log n)O(n²)空间复杂度O(1)O(1)O(1)稳定性不稳定不稳定稳定适用场景小数据集大数据集教学演示优点简单易实现高效的大数据排序稳定且直观缺点效率低实现较复杂效率最低希望这篇文章对你有帮助~🌹🌹🌹。

2025-03-24 16:15:44 1194 11

原创 【初探数据结构】直接插入排序与希尔排序详解

插入排序:简单但低效,适合小规模数据。希尔排序:通过分组优化插入排序,性能显著提升,是插入排序的高效变种。选择建议:数据规模较小时用插入排序,中等规模用希尔排序,大规模数据可考虑更高效的算法(如快排、归并)后序会一一讲解。

2025-03-24 10:44:51 1038 19

原创 【初探数据结构】二叉树的链式结构——分治的暴力美学

BTNode;使用左右指针实现树形结构data字段存储节点值(示例中为char类型)本文实现了二叉树的创建、遍历、统计等核心操作。读者可通过完整代码进一步实验。二叉树作为基础数据结构,其思想可延伸至AVL树、红黑树等高级结构,值得深入学习。希望这篇博客能帮助你更好地理解二叉树操作!

2025-03-22 15:04:44 1477 5

原创 【初探数据结构】堆的应用实例(堆排序与TopK问题)

应用场景核心思路时间复杂度空间复杂度优势堆排序构建堆 + 交换堆顶O(n log n)O(1)原地排序,适合内存敏感TopK问题维护大小为K的最小堆O(n log K)O(K)高效处理海量数据或数据流堆结构凭借其高效的插入删除和极致的空间利用率,在排序与筛选问题中占据独特地位。掌握堆排序与TopK的解法,能显著提升处理大规模数据的能力。理解原理后,可尝试手写堆实现或结合具体业务场景优化代码,进一步巩固知识。

2025-03-22 15:02:52 1126

原创 【初探数据结构】二叉树的顺序结构——堆的实现详解(上下调整算法的时间复杂度分析)

堆是一种基于完全二叉树的数据结构,通常分为最大堆(父节点值≥子节点)和最小堆(父节点值≤子节点)。由于完全二叉树的特性,堆可以用数组高效存储,通过索引关系快速定位父子节点。如果有⼀个关键码的集合,把它的所有元素按完全⼆叉树的顺序存储⽅式存储,在⼀个⼀维数组中,并满⾜:$K=\{ k_0,k_1,k_2,...,k_{n-1} \}$,` i = 0、1、2... `,则称为⼩堆(或⼤堆)。将根结点最⼤的堆叫做最⼤堆或⼤根堆,根结点最⼩的堆叫做最⼩堆或⼩根堆。

2025-03-21 14:26:46 727

原创 【初探数据结构】树与二叉树

树结构相对线性表就⽐较复杂了,要存储表⽰起来就⽐较⿇烦了,既然保存值域,也要保存结点和结点之间的关系,实际中树有很多种表⽰⽅式如:双亲表⽰法,孩⼦表⽰法、孩⼦双亲表⽰法以及孩⼦兄弟表⽰法等。二叉树是树形结构中我们最常用的,⼀棵⼆叉树是结点的⼀个有限集合,该集合由⼀个根结点加上两棵别称为左⼦树和右⼦树的⼆叉树组成或者为空。⼀个⼆叉树,如果每⼀个层的结点数都达到最⼤值,则这个⼆叉树就是满⼆叉树。完全⼆叉树是效率很⾼的数据结构,完全⼆叉树是由满⼆叉树⽽衍生出来的。要注意的是满⼆叉树是⼀种特殊的完全⼆叉树。

2025-03-20 00:41:05 1149

原创 【初探数据结构】线性表——栈与队列(代码实现与详解)

栈和队列是算法设计的基石,理解其原理和实现是程序员的基本功。建议通过实际编码练习(如实现动态栈、循环队列)加深理解,并多刷相关面试题提升应用能力。

2025-03-11 06:00:00 1127 5

原创 【初探数据结构】带环链表:原理、判断与数学证明

由节点构成的链式结构中存在至少一个节点,其指针域指向链表中已存在的节点,形成闭合环路。环路结构:尾节点不指向NULL而指向历史节点遍历特性:从任意环内节点出发将陷入无限循环。

2025-03-10 06:00:00 1134 6

原创 【初探数据结构】链表OJ算法——快慢指针

如果读者觉得不过瘾,那就再来两题吧~141. 环形链表 - 力扣(LeetCode)19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)本文只讲解了两个简单的题目,目的在于帮助读者打好基础,下一篇文章将要讲解的带环链表也会用到快慢指针,届时读者可以对其有更深层次的认知。

2025-03-07 15:05:57 1483 3

原创 【初探数据结构】线性表——链表(二)带头双向循环链表(详解与实现)

带头双向循环链表,顾名思义,包含以下几个重要特点:每个结构体包含:带头双向循环链表支持常见的增删查改操作,以下是常用操作的实现。在初始化时,创建一个头节点,并将其和指针都指向自身,这样链表初始时是空的,并且形成了一个循环结构。用于执行具体的插入操作,它将新节点插入到链表末尾。3.3 删除节点尾删操作:删除链表尾部的节点。头删操作:删除链表头部的节点。3.4 查找节点通过值查找链表中的节点。3.5 删除指定节点通过指针删除指定位置的节点。4. 带头双向循环链表的优势简化

2025-03-06 12:54:34 1295 24

原创 【初探数据结构】链表OJ算法——哨兵位(合并两个有序链表详解)

如果这道题不用哨兵位,你将会被一个错误搞的焦头烂额——对空指针解引用,不相信的话你可以去试试,你一定会影响深刻的。通过这道题,是不是觉得哨兵位真的很香?非常省事,特别是这种多链表的联合问题,我们一定要留个心眼。

2025-03-05 08:16:24 917

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除