- 博客(14)
- 收藏
- 关注
原创 c++类和对象(二)
本文介绍了C++类中的默认成员函数——构造函数和析构函数。构造函数在对象实例化时初始化对象,具有函数名与类名相同、无返回值、可重载等特点。需要注意无参构造、全缺省构造和默认构造三者不能共存,否则会产生歧义。析构函数用于资源清理,具有类名前加~、无参数无返回值等特点。析构函数对内置类型不做处理,但对自定义类型会调用其析构函数。当类涉及动态内存申请时必须自定义析构函数,否则会导致内存泄漏。多个局部对象的析构顺序遵循"后定义先析构"原则。
2025-11-25 21:13:49
272
原创 c++类和对象
本文介绍了C++中类的定义与实例化的核心概念。类定义格式包括class关键字、类名和包含成员变量与方法的类主体。访问限定符(public/private/protected)用于控制成员访问权限,实现封装,private为默认限定符。类域通过::操作符指明成员归属,解决命名冲突。类的实例化是将类模板转化为实际对象并分配内存的过程,对象大小遵循内存对齐规则,仅计算成员变量。this指针是编译器隐式添加的形参,指向调用对象,用于区分不同对象的成员访问,可在成员函数内部显式使用。这些概念构成了C++面向对象编程的
2025-11-18 15:03:31
757
原创 归并排序(递归和非递归版本的实现)
摘要:归并排序是一种基于分治法的有效排序算法,通过将已有序的子序列合并实现整体有序。文章详细介绍了两种实现方式:1)递归版本通过二叉树结构将数组不断二分,比较后归并;2)非递归版本使用gap变量控制分段长度,逐步扩大归并范围。特别讨论了非递归实现中对奇数长度数组的特殊处理,包括边界条件判断和索引调整。两种方法最终都将排序结果存入新建的临时数组后再写回原数组。
2025-11-16 12:35:11
358
原创 c++引用的详细解析
摘要:引用是C++中为已有变量创建别名的方式,与变量共享内存空间。关键特性包括:定义时必须初始化、支持多个别名、不可更改引用对象。引用在函数参数传递和返回值场景中比指针更高效,但需注意栈帧销毁问题。const引用涉及权限控制,权限不可放大但可缩小。引用与指针的主要区别在于:内存占用、初始化要求、对象绑定方式、访问方式和安全性。引用作为语法糖,简化了操作但保留了指针的核心功能。
2025-11-16 01:34:17
509
原创 直接插入排序与希尔排序
本文介绍了两种经典排序算法:直接插入排序和希尔排序。直接插入排序通过逐个比较将元素插入到已排序序列中,时间复杂度为O(n^2)(最坏)或O(n)(最好),空间复杂度O(1)。希尔排序是改进版,采用分组插入策略,初始以较大间隔(gap)分组排序,逐步减小gap直至1,时间复杂度约为O(n^1.3)。两种算法都通过代码实现展示了具体操作过程,其中希尔排序通过引入gap概念显著提升了插入排序的性能。
2025-11-13 10:17:14
241
原创 c++基础
摘要:本文介绍了C++中的命名空间、缺省参数和函数重载三个重要概念。命名空间通过域隔离解决了全局作用域中的命名冲突问题。缺省参数分为全缺省和半缺省两种形式,使用时需注意传参顺序。函数重载允许同名函数存在,但要求参数类型、个数或顺序不同,仅返回值不同不能构成重载。这些特性共同增强了C++的灵活性和可维护性。(149字)
2025-11-11 14:04:41
282
原创 链式二叉树的实现
本文介绍了链式二叉树的定义和基本操作实现。链式二叉树通过链表结构表示,每个节点包含数据域和左右指针域。重点阐述了二叉树的遍历方法:前序(根左右)、中序(左根右)和后序(左右根)遍历的递归实现过程,并详细说明了NULL节点的处理方式。此外,还介绍了计算节点数、叶子节点数、层序遍历(使用队列)、查找特定值和判断完全二叉树等操作的实现思路。文中通过具体示例展示了各遍历方式的节点访问顺序。最后提及了二叉树相关操作的代码实现框架,包括函数定义、调用和功能说明。这些基础知识为理解和实现二叉树数据结构提供了系统指导。
2025-11-06 15:02:16
616
原创 堆的实现(C语言版)
本文介绍了堆数据结构的定义、实现方法和代码呈现。堆是一种基于二叉树顺序存储的特殊结构,分为大堆(父节点大于子节点)和小堆(父节点小于子节点)。实现部分详细讲解了堆的插入(需扩容和向上调整)、删除(交换末尾元素并向下调整)以及获取堆顶数据和元素数量的操作。最后给出了堆的函数定义、调用和实现方法。全文系统性地阐述了堆的核心概念与操作流程。
2025-11-04 14:12:46
302
原创 栈的实现(c语言)
本文介绍了栈这种后进先出(LIFO)数据结构的基本概念和操作。主要内容包括:栈的初始化、入栈、出栈、获取栈顶元素、获取栈中元素个数以及销毁栈等基本操作。文章还详细说明了栈的实现方式,即通过线性表实现,包含指针变量和栈顶标记。最后简单提及了相关函数的定义、功能和调用方式。整篇文章简明扼要地阐述了栈这一数据结构的基本原理和实现方法。
2025-11-03 17:33:24
151
原创 链表OJ题
本文介绍四个链表相关OJ题目的解题思路和实现方法。1.链表分割:通过创建两个子链表分别存放大于和小于x的节点,保持原顺序合并;2.相交链表:计算两链表长度差,同步遍历寻找交点;3.回文链表:利用快慢指针找中点,逆置后半段后比较;4.环形链表:使用快慢指针检测环,相遇后确定环起点。每个问题都提供了具体的解决步骤和代码实现方案,涉及链表操作的核心算法和指针运用技巧。
2025-11-01 22:08:29
767
原创 循环双链表的实现
本文介绍了循环双链表的基本概念和操作实现。循环双链表由包含pre指针、值和next指针的节点组成,通过影子节点实现循环结构。文章详细讲解了初始化、头/尾插/删、查找、销毁等核心操作的具体实现步骤,并比较了循环双链表尾插O(1)的时间复杂度优势。最后提及代码实现的三个部分:函数定义、调用和具体实现。全文系统阐述了循环双链表的原理和操作方法,为数据结构学习提供了实用参考。
2025-10-30 10:15:56
649
原创 关于单链表的OJ题
本文介绍了四种链表相关算法题的解题方法:1)移除链表元素:通过创建新链表来筛选符合条件的节点;2)反转链表:利用头插法实现反转;3)寻找链表中点:通过计数和折半查找确定中间节点;4)合并有序链表:通过比较节点值依次合并。每种方法都包含题目描述、解题思路和代码实现,其中着重处理了边界条件(空链表情况)。文章强调解题思路的多样性,鼓励读者分享更优解法。这些基础链表操作对算法学习很有帮助,适合需要巩固链表知识的编程学习者参考。
2025-10-29 21:55:18
720
原创 单链表的实现(C语言)
本文介绍了单链表的基本概念和常见操作。单链表由指针域和值域组成,通过指针实现非连续存储。主要操作包括:头插、尾插、头删、尾删、查找、指定位置前插入、删除指定位置数据以及销毁链表等。每种操作都详细说明了实现逻辑和边界条件处理,如空链表判断、单节点处理等。最后简要提及了单链表的代码实现,包括函数定义、功能和调用方式。文章系统地梳理了单链表的核心操作和实现要点。
2025-10-28 20:45:58
801
原创 线性表的实现
函数定义·函数实现·函数功能4.头删 :先需判断其是否为空和size的有效个数是否为0,在使用for循环将前面数据覆盖,最后size--。5.尾删:先判断其是否可以满足删除条件,直接把有效个数减减就行6.销毁:将线性表销毁操作,防止随机值和野指针的出现。判断其指针是否存在,存在后将其用free函数就行释放,然后将指针置为NULL,里面的值置为0。以上这是今天要分享的内容,仅仅介绍了一些关于线性表的基本操作、实现方法和为什么要就行这样操作的阐释,希望对读者产生帮助。
2025-10-27 17:42:57
366
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅