- 博客(17)
- 收藏
- 关注
原创 【数据结构】二叉树
本文介绍了二叉树链式结构的基本实现和操作。首先通过手动创建简单二叉树来降低学习成本,然后详细讲解了三种遍历方式(前序、中序、后序)的递归实现及执行过程。接着阐述了四个关键操作:计算二叉树节点个数(递归累加左右子树节点)、求叶子节点个数(判断左右子树为空)、计算二叉树高度(比较左右子树高度取最大值)以及求第k层节点个数(递归递减k值)。特别强调了在计算高度时保存中间结果的重要性,避免重复计算导致效率低下。这些基础操作为二叉树的进一步应用奠定了重要基础。
2025-11-08 11:58:05
1153
原创 【C++】模板初阶+STL简介
C++模板是泛型编程的基础,通过模板可以实现与类型无关的通用代码。函数模板通过参数化类型生成特定版本函数,解决代码复用问题;类模板则用于生成泛型类。STL作为标准模板库,包含六大组件,是笔试面试的重要内容。学习STL需要结合实践,掌握其设计思想和使用方法。模板的出现使C++真正实现了质的飞跃,成为现代编程的重要工具。
2025-11-05 16:28:37
960
原创 【C++】内存管理
本文探讨了C/C++中的内存分布与管理机制。首先通过代码示例分析了变量在不同内存区域(栈、堆、数据段、代码段)的存储位置,重点区分了全局变量、静态变量和局部变量的存储差异。其次详细介绍了C++的new/delete操作符,对比其与malloc/free的区别,特别是new会自动调用构造函数/析构函数的特性。文章还解析了operator new/delete的底层实现原理,说明它们本质是通过malloc/free进行内存管理,但新增了异常处理机制。最后总结了内置类型和自定义类型在使用new/delete时的不
2025-11-04 14:49:43
1675
7
原创 【C++】类和对象(中)
两万字超详细讲述类的默认成员函数,包括构造函数,析构函数,拷贝构造,赋值重载,取地址重载等,还有运算符重载和const成员等内容,以及日期类的实现
2025-10-30 09:19:07
729
2
原创 【C++】类和对象(上)
本文主要介绍了C++中类和对象的基础知识。首先阐述了面向过程与面向对象的区别,强调C++通过类将属性和方法封装为对象。在类定义部分,详细说明了类的基本格式、访问限定符(public/protected/private)的作用及类域的概念。随后解释了实例化的含义,指出类定义时成员变量仅是声明,实例化时才会分配物理内存空间。最后讨论了对象大小的计算规则,指出不同对象共享成员函数地址而无需在每个对象中存储,对象大小仅由成员变量决定并遵循内存对齐原则。全文通过代码示例和通俗比喻,帮助读者理解C++类和对象的核心概念
2025-10-26 18:26:09
1251
12
原创 【C++】初识C++(万字超详细一遍过基础)
本文简要介绍了C++的发展历史和重要性,展示了C++在编程语言排行榜中的位置及其广泛应用领域。通过第一个"Hello World"程序示例,对比了C++与C语言的语法兼容性。重点讲解了命名空间(namespace)的概念及其三种使用方法,解释了其在解决命名冲突中的作用。随后介绍了C++的输入输出流操作符(cin/cout)和缺省参数的使用规则,包括全缺省和半缺省参数的语法要求。全文为C++初学者提供了基础语法入门知识,涵盖了核心编程概念。
2025-10-25 20:05:12
1046
1
原创 【数据结构】堆
本文介绍了堆数据结构及其相关概念。首先讲解了树的基本概念和术语,包括节点度、层次、深度等。重点介绍了二叉树的两种特殊形式:满二叉树和完全二叉树。堆本质上是一个完全二叉树,具有父节点值总是大于/小于子节点值的特性。文章详细解析了堆的实现方法,包括使用顺序表存储、关键接口函数(初始化、销毁、判空等)以及核心算法——向上调整和向下调整。其中,向上调整用于插入数据时维护堆结构,向下调整用于删除堆顶数据时保持堆特性。特别强调了堆的数学关系:父节点i与子节点2i+1/2i+2的对应关系。最后给出了堆排序的实现思路。
2025-10-18 20:08:23
1475
原创 【数据结构】栈和队列
本文介绍了栈和队列两种常见的数据结构及其实现方式。栈是一种后进先出(LIFO)的线性表,支持压栈和出栈操作,通常使用数组实现更优;队列是一种先进先出(FIFO)的线性表,支持队尾插入和队头删除,更适合用链表实现。文章详细阐述了两种数据结构的概念、实现方法及各主要操作接口(初始化、销毁、插入、删除、判空等)的代码实现,并通过测试验证了各功能的正确性。对于栈,重点说明了栈顶指针初始化位置的选择逻辑;对于队列,则解释了使用双结构体定义的必要性。
2025-10-16 17:57:26
1210
原创 【数据结构】单链表
本文介绍了链表的基本概念和结构实现。链表是一种非连续存储结构,通过指针链接实现数据元素的逻辑顺序。文章详细阐述了单链表的实现方法,包括节点结构体定义、创建新节点函数,以及各种操作接口的实现,如尾插、头插、尾删、头删、查找、指定位置插入/删除等。每个操作都配有代码实现和测试示例,展示了链表动态增删节点而不影响其他节点的特性。通过指针变量串联各节点,实现了高效的数据组织方式。
2025-10-13 15:48:18
539
原创 【数据结构】顺序表
本文介绍了线性表的基本概念和顺序表的实现方法。线性表是由相同特性数据元素组成的有限序列,逻辑上连续但物理存储不一定连续。重点讲解了动态顺序表的结构定义和11个核心接口函数的实现,包括初始化、销毁、扩容检查、增删改查等操作。通过C语言代码示例展示了每种接口的具体实现,并提供了测试验证方法。文章强调了数据结构设计中考虑全面性和封装接口的重要性,帮助读者理解顺序表的基本原理和实现细节。
2025-10-11 17:07:19
643
原创 动态内存管理
本文介绍了C语言中动态内存分配的必要性及相关函数。动态内存分配弥补了静态内存分配固定大小的缺陷,使程序运行时能灵活申请和释放内存空间。重点讲解了malloc、free、calloc和realloc函数的使用方法及注意事项,包括内存检查、初始化和正确释放。同时列举了常见的动态内存错误,如解引用空指针、越界访问、错误释放等,并强调内存泄漏的风险。合理使用动态内存分配能提升程序灵活性,但需谨慎操作以避免内存问题。
2025-09-30 17:26:29
865
原创 自定义类型:联合和枚举
本文介绍了C语言中的联合体和枚举类型。联合体(共用体)的特点是所有成员共用同一块内存空间,大小至少是最大成员的大小,且可能存在内存对齐。通过代码示例展示了联合体的内存布局特点。枚举类型用于列举有限取值,默认从0开始递增,也可手动赋值。相比#define定义常量,枚举具有类型检查、可调试、作用域规则等优势。文章还通过礼品兑换单的案例,展示了联合体在节省内存空间方面的实际应用,并介绍了利用联合体判断系统大小端的方法。
2025-09-21 12:34:37
472
原创 自定义类型:结构体
本文主要介绍了C语言中结构体的基本概念和使用方法。内容包括:1) 结构体类型的声明方式及变量初始化;2) 结构体的特殊声明(匿名结构体)和自引用问题;3) 结构体内存对齐规则及计算示例;4) 修改默认对齐数的方法;5) 结构体传参的最佳实践。重点讲解了内存对齐的原理和计算方式,强调了结构体设计时考虑内存布局的重要性,并建议在传参时使用指针而非整个结构体以提高性能。文章通过多个代码示例详细说明了相关概念和注意事项。
2025-09-16 18:15:38
878
原创 【C语言】数据在内存中的存储
本文主要介绍了C语言中数据在内存中的存储方式。首先讲解了整数的三种二进制表示方法(原码、反码、补码)及其转换规则,说明计算机中存储的是补码。通过实例分析了char类型变量在内存中的存储和整型提升过程。其次介绍了大小端字节序的概念及判断方法,并给出了两种判断程序。最后详细解析了浮点数的存储规范IEEE 754,包括符号位、指数位和有效数字位的处理方式,并通过代码示例展示了浮点数和整数的不同解析结果。全文深入浅出地解释了不同类型数据在内存中的存储机制。
2025-09-15 13:14:50
999
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅