- 博客(29)
- 收藏
- 关注
原创 C++之类和对象(中)(超详细拷贝构造与赋值运算符重载讲解,另附流插入流提取等等重载和日期类代码详解!)
本文介绍了C++中类的两个重要特性:拷贝构造函数和运算符重载。拷贝构造函数是一种特殊的构造函数,用于用一个对象初始化另一个新对象,其形参必须是const修饰的类类型引用以避免无限递归。编译器默认生成的拷贝构造函数执行浅拷贝,当类涉及动态内存管理时需要手动实现深拷贝。运算符重载通过operator关键字扩展运算符对自定义类型的支持,但需保持运算符原有含义,且五种运算符(.*、::、sizeof、?:、.)不可重载。文中通过日期类和栈类的示例详细说明了这两个特性的使用场景和注意事项。
2025-10-30 16:23:07
985
原创 C++之类和对象(中)(六大默认成员函数中的构造函数与析构函数)
文章摘要: C++类中的六个默认成员函数之构造函数详解,重点讲解了构造函数的作用、特点及使用方法。构造函数在对象创建时自动调用用于初始化,分为无参、全缺省和编译器默认生成三种类型。内置类型成员变量默认不初始化,可通过赋缺省值解决;自定义类型成员会自动调用其默认构造函数。文章还指出了无参构造函数与全缺省构造函数不能共存的问题,并强调了构造函数调用时的特殊语法规则(如避免函数声明歧义)。这些特性体现了C++对对象初始化的自动化支持和类型安全机制。
2025-10-24 13:22:40
1383
原创 C++之类和对象(上)(多例子详解this指针以及封装特性的初步引入)
本文介绍了面向对象编程中类和对象的基本概念。首先对比了面向过程与面向对象的区别,面向对象以实体交互为核心,如人、洗衣机等对象共同完成洗衣任务。其次详细讲解了类的定义方式,包括成员变量和成员函数的声明,以及class与struct的区别。重点阐述了三种访问限定符(public、protected、private)的作用,通过这些限定符实现封装特性,保护数据安全。最后说明了类的作用域规则和实例化过程,演示了如何通过域作用限定符在类外定义成员函数。文章通过生动的例子(如电脑、洗衣机等)帮助读者理解面向对象的核心思
2025-10-21 20:32:55
969
原创 IDM下载失败排查
查看IDM日志文件(默认路径:C:\Users[用户名]\AppData\Roaming\IDM)通过Fiddler/Wireshark抓包分析请求失败原因。尝试手动添加Referer或User-Agent信息。调整IDM最大连接数(默认为8,可降低至4测试)尝试更换下载保存路径(避免中文或特殊字符路径)关闭可能占用文件的程序(如杀毒软件实时扫描)重置IDM设置(选项→常规→重置设置)检查下载链接是否失效或需要身份验证。尝试关闭防火墙或安全软件临时测试。检查浏览器扩展是否被禁用。文件权限或存储路径错误。
2025-09-21 19:06:19
390
原创 C++入门(内含命名空间、IO、缺省参数、函数重载、引用、内联函数、auto关键字、新式范围for循环、关键字nullptr的超全详细讲解!)
本文介绍了C++与C语言的渊源及其对C语言缺点的改进,内含命名空间、IO、缺省参数、函数重载、引用、内联函数、auto关键字、新式范围for循环、关键字nullptr的超全详细讲解
2025-09-21 19:04:08
1695
原创 一篇文章带你玩转效率超高的归并排序与计数排序!(内含递归与非递归版本讲解)
本文介绍了归并排序的递归和非递归实现方法,以及计数排序的基本原理。归并排序采用分治思想,通过递归划分区间到最小单元后逐步合并有序子序列,非递归版本则通过gap参数控制合并步长,并详细说明了边界处理的三种情况。计数排序适用于数据范围较小的场景,通过统计元素出现次数实现线性时间复杂度排序。两种算法代码实现均附有详细注释,展示了从局部有序到整体有序的排序过程,为理解经典排序算法提供了清晰的技术参考。
2025-08-15 23:45:17
949
原创 一篇文章带你完美拿下快速排序的三个版本(附带随机取数、三数取中、三路划分、小区间优化等细节功能优化讲解)!
一篇文章带你拿下快速排序的三个版本(Hoare法、挖坑法、前后指针法)以及各种功能细节(如三数取中、三路划分等)的优化实现!(附OJ题目)
2025-08-14 22:48:43
1662
原创 c语言-数据结构-一篇文章带你玩转希尔排序和插入排序
本文介绍了插入排序和希尔排序两种排序算法的实现方式及时间复杂度分析。插入排序通过逐个插入元素构建有序序列,时间复杂度为O(N²)最坏情况,O(N)最好情况。希尔排序是插入排序的改进版,通过预排序(分组排序)提高效率,包含多次预排序和最终插入排序两个阶段。预排序通过动态调整gap值(初始为n/2并逐步减半)实现分组,使数据趋于有序。希尔排序的时间复杂度约为O(N^1.3),优于直接插入排序。文中通过图示和代码示例详细说明了两种排序的具体实现过程及性能优化原理。
2025-07-30 17:33:46
1333
原创 c语言-数据结构-二叉树OJ之子树与二叉树的构建
本文介绍了两个二叉树相关的OJ题解。第一部分"另一棵树的子树"通过递归比较两棵树的节点值,判断一棵树是否是另一棵的子树。第二部分"二叉树的构建及遍历"展示了如何根据前序遍历字符串构建二叉树,并进行中序遍历输出。两题均采用递归方法解决,涉及二叉树的基本操作和遍历技巧。
2025-07-29 14:33:13
523
原创 c语言-数据结构-沿顺相同树解决对称二叉树问题的两种思路
本文介绍了两种判断二叉树是否对称的算法思路。第一种方法是先翻转根节点的任意一侧子树(左或右),然后比较翻转后的子树与另一侧子树是否相同;第二种方法直接比较左右子树是否镜像对称,即比较左子树的左节点与右子树的右节点,以及左子树的右节点与右子树的左节点。两种方法都通过递归实现,时间复杂度均为O(n)。文中提供了两种方法的C语言实现代码,并配有图示说明。
2025-07-25 22:08:07
631
原创 c语言-数据结构-二叉树OJ
本文讲解了二叉树相关的五道OJ题目:1.单值二叉树判断,使用分冶法递归解决;2.二叉树最大深度,类似求树高;3.翻转二叉树,通过交换左右子树实现;4.判断两树是否相同,比较结构与节点值;5.二叉树前序遍历,需注意传参问题。每题均给出代码实现和解题思路,重点分析了递归条件和参数传递的注意事项,如单值树的递归展开图、相同树判断条件的选取以及前序遍历中变量传递的地址问题等。
2025-07-22 11:14:09
918
原创 c语言-数据结构-如何用分冶法求得二叉树的节点数与高度?
本文介绍了三种二叉树问题的分治解法:1.二叉树高度计算:比较左右子树高度并加1;2.节点总数统计:左右子树节点数之和加1;3.第k层节点数计算:递归求左右子树的k-1层节点数之和。通过分治思想,将问题分解为子问题,避免了直接遍历的复杂性,提高了算法效率。文中用学校管理层级比喻解释了递归原理,并给出了详细的递归过程和代码实现分析。
2025-07-19 10:54:57
830
原创 c语言-数据结构-二叉树的遍历
本文介绍了二叉树的四种遍历方式:前序、中序、后序和层序遍历,重点讲解了前三种递归实现的遍历方法。前序遍历顺序为根-左-右,中序遍历为左-根-右,后序遍历为左-右-根。文章通过图示详细说明了每种遍历的执行过程:前序遍历先访问根节点再递归左右子树,中序遍历先递归左子树再访问根节点,后序遍历先递归左右子树最后访问根节点。每种遍历方式都配有对应的代码实现和节点访问顺序图示,帮助理解二叉树遍历的递归过程。
2025-07-16 21:14:21
796
原创 数据结构-为什么双指针法可以用来解决环形链表?-使用O(1)的空间复杂度去解决环形链表的思路
本文介绍了环形链表检测的双指针解法,重点分析了快慢指针不同步长下的相遇条件。当快指针每次走2步、慢指针每次走1步时,二者必然相遇。若快指针步长增大,相遇情况会因初始距离N和环长C的奇偶性而变得复杂:步长为3时,N为偶数或C为奇数才能相遇;步长为4时,需要根据N和C是否为3的倍数来判断。文章通过数学推导证明了不同步长组合下的相遇条件,并提供了代码实现示例。这种分析方法有助于深入理解环形链表的检测机制。
2025-06-12 21:25:26
1948
原创 如何使用deepseek满血版
DeepSeek满血版是一款多功能AI平台,提供文本生成、代码辅助和数据分析等服务。用户可通过官网或应用商店下载,完成注册登录后即可使用。平台支持参数调整和结果优化,高级功能包括结构化提示、示例引导和分步指令等技巧。使用时需遵守内容政策,敏感领域输出建议人工复核。该工具适用于各类智能生成需求,通过多次迭代可获得更优质结果。
2025-06-11 23:21:19
775
原创 数据结构-链表OJ-回文链表,如何将时间复杂度控制为O(N),空间复杂度控制为O(1)?
本篇讲解了用 O(n) 时间复杂度和 O(1) 空间复杂度解决回文链表的思路方法
2025-06-10 23:08:05
599
原创 数据结构-相交链表OJ-如何用环形链表来解决相交链表?
今天讲解了能够将时间复杂度为控制在 O(m + n) 、空间复杂度 控制在O(1) 的解决相交链表的两种解法,同时涉及了快慢指针的思想
2025-06-09 23:13:27
836
原创 数据结构-如果将堆结构应用到TOP-K问题上会怎样?
本文讲解了如何利用堆结构高效解决TOP-K问题(求前K个最大/最小元素)。针对大数据量场景(如100亿数据),传统排序方法内存消耗过大,而堆结构只需维护K个元素的空间。具体实现时:找前K个最大元素建小堆,将剩余元素逐个与堆顶(最小值)比较,更大则替换并调整;反之,找前K个最小元素建大堆。该方法避免了全局排序,时间复杂度优化至O(NlogK)。文中给出c语言代码实现包括建堆、调整和比较替换流程,适用于海量数据场景。
2025-06-05 18:27:34
1033
原创 数据结构-二叉树-如何用c语言玩转堆排序?
堆排序是利用堆数据结构实现的高效排序算法,时间复杂度稳定为O(NlogN),适合大规模数据排序。相比冒泡排序等O(N²)算法,堆排序在数据量大时优势明显。实现时需注意:升序排序应建大堆而非小堆,通过交换堆顶与堆尾元素并调整堆结构完成排序。建堆方式推荐向下调整法,其时间复杂度为O(N),优于向上调整法的O(NlogN)。堆排序空间复杂度低且性能稳定,适用于各类排序场景。后续将介绍基于堆排序思想的topk问题解决方案。
2025-06-04 20:31:01
966
原创 数据结构-二叉树-C语言对堆的代码实现
本文补充讲解了二叉树的相关计算练习,包括结点数量与高度的计算。重点介绍了二叉树的两种存储方式(顺序存储和链式存储)及其适用场景,进而引入堆的概念。堆是一种特殊的完全二叉树,分为大根堆和小根堆,要求父结点始终大于或小于子结点。文章详细讲解了堆的插入、删除操作以及向上调整和向下调整算法,并以小根堆为例展示了c语言代码对堆的实现。最后简要提及堆的初始化、销毁等基础操作,为后续堆排序内容做铺垫。
2025-06-01 20:00:22
1223
原创 数据结构-树与二叉树
本文介绍了树与二叉树的基本概念和应用。树是一种非线性数据结构,由根节点和子树组成,具有层次性。文章详细讲解了树的相关术语(如度、深度、父节点、子节点等)和特性,并指出正确的树结构应避免子节点相交等错误。通过"左孩子右兄弟"法可实现树的遍历。重点介绍了二叉树的两种特殊类型:满二叉树(每层结点达最大值)和完全二叉树(前N-1层满,最后一层连续)。最后给出了二叉树结点数量的计算方法和重要结论(度为0的结点数=度为2的结点数+1)。
2025-05-31 20:30:38
898
原创 c语言-数据结构-链表OJ1
摘要:本文介绍了四种链表OJ题的解法。1.移除链表元素:采用直接删除或新链表尾插法;2.寻找中间节点:推荐快慢指针法;3.查找倒数第k个节点:使用快慢指针保持间距k;4.反转链表:提供两种指针操作方式。每种方法都给出思路图解和代码示例,重点推荐快慢指针等高效解法,同时分析不同方法的复杂度。
2025-05-25 18:20:28
495
原创 c语言之单链表(2)
本篇文章是对上篇文章单链表的补充,并且介绍实现了在指定位置pos以及前后插入删除的功能,后续会继续推出链表oj,双向链表等等讲解。
2025-04-16 21:02:19
556
原创 小白速看!——>一篇文章带你玩转时间复杂度与空间复杂度【数据结构篇】
小白速览——>本文介绍了详细介绍了时间复杂度和空间复杂度,它们是数据结构设计的基础,是理解与设计高效算法的基础,在校招与考研中也占据一席之地。该文非常适合小白阅读,快速掌握时间复杂度与空间复杂度。内容较多,请耐心观看!
2025-04-06 21:37:17
842
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅