- 博客(51)
- 收藏
- 关注
原创 《算法竞赛从入门到国奖》算法基础:搜索-多源BFS
本文介绍了多源最短路问题的两种解法。第一部分提出"超级源点"思想,将多个起点合并处理,并通过矩阵距离问题展示如何从所有1出发BFS更新0点的最短距离。第二部分以刺杀大使问题为例,讲解二分答案结合BFS的解法:通过二分查找最小伤害值,并用BFS判断能否从第一行到达最后一行。两题都采用多起点初始化队列的技巧,分别解决了最短路和二分验证问题,展示了BFS的灵活应用。
2026-01-30 20:25:40
385
2
原创 《算法竞赛从入门到国奖》算法基础:搜索-BFS初识
本文介绍了BFS(宽度优先搜索)算法及其在多个题目中的应用。首先讲解了BFS的基本原理,即从起点开始逐层搜索,天然具有最短路径特性。随后通过四个例题展示具体实现:1)马的遍历使用BFS计算每个位置的最短步数;2)kotori和迷宫通过BFS寻找出口数量和最短距离;3)CatchThatCowS采用BFS加剪枝策略优化搜索;4)八数码难题用BFS结合状态记录求解最小步数。每个例题都提供了完整的C++实现代码,展示了BFS在不同场景下的应用技巧。
2026-01-28 21:58:37
576
原创 《算法竞赛从入门到国奖》算法基础:搜索-记忆化搜索
本文介绍了记忆化搜索在算法中的应用,通过三个具体题目展示了其实现方式。首先以洛谷P1464为例,说明如何通过"备忘录"存储递归结果来优化计算;其次在"天下第一"问题中,使用set记录状态避免循环;最后通过滑雪问题,展示了如何用二维数组存储中间结果避免重复计算。文章通过代码实例详细演示了记忆化搜索的实现过程,体现了其在减少重复计算、提高算法效率方面的优势。
2026-01-25 17:47:30
407
8
原创 《算法竞赛从入门到国奖》算法基础:搜索-DFS初识
本文介绍了深度优先搜索(DFS)算法在三个经典问题中的应用:选数问题、飞机降落问题和八皇后问题。通过递归实现DFS,分别展示了如何枚举所有可能的选择组合,并给出对应的C++实现代码。在选数问题中,DFS用于枚举所有可能的数组合;在飞机降落问题中,DFS生成全排列来寻找可行降落顺序;在八皇后问题中,DFS配合剪枝策略确保行列和对角线约束。文章通过具体实例演示了DFS的核心思想"尽可能深"地搜索和回溯过程,并提供了完整的代码实现方案。
2026-01-24 17:14:43
688
10
原创 《算法竞赛从入门到国奖》算法基础:入门篇-分治
本文介绍了四种经典的分治算法应用:逆序对计算、第k小数查找、最大子段和求解和地毯填补问题。对于逆序对问题,通过分治排序和双指针法高效统计;第k小数采用三路划分快速定位;最大子段和通过递归处理左右区间及跨区间情况;地毯填补则利用二维分治和假公主构造实现矩阵填充。每种算法都包含原理说明和完整C++代码实现,展现了分治算法"分而治之"的核心思想及其在不同场景下的灵活应用。
2026-01-23 22:56:31
1078
11
原创 《算法竞赛从入门到国奖》算法基础:入门篇-递归初阶
本文介绍了三种经典递归算法问题:汉诺塔、占卜DIY和FBI树。汉诺塔通过将问题分解为移动n-1个盘子的子问题来解决;占卜DIY模拟抽牌过程,利用递归处理牌堆操作;FBI树则采用前缀和判断子树类型,构建二叉树结构。每个问题都展示了递归解决重复子问题的核心思想,并提供了具体的算法原理和实现代码。这些案例展示了递归在算法设计中的强大应用能力。
2026-01-19 16:35:14
775
14
原创 《算法竞赛从入门到国奖》算法基础:入门篇-离散化
本文介绍了离散化算法及其在区间问题中的应用。首先阐述了离散化思想:当数据值大但数量少时,通过排序和映射将数据缩小处理。然后通过两个经典例题展示离散化的实际应用:1)火烧赤壁问题中,通过离散化处理大范围区间后使用差分统计覆盖长度;2)贴海报问题中,为避免区间覆盖错误,离散化时需额外考虑相邻点。文章提供了完整的C++代码实现,帮助读者理解离散化在算法竞赛中的实用价值。
2026-01-18 22:20:23
890
8
原创 《算法竞赛从入门到国奖》算法基础:入门篇-贪心算法(下)
本文介绍了四种基于贪心算法的区间问题解决方案:1. 线段覆盖问题(洛谷P1803)通过排序后选择右端点较小的区间;2. 雷达安装问题(UVA1193)将岛屿坐标转换为x轴区间后处理;3. 防晒分配问题(洛谷P2887)采用两种正确排序策略;4. 牛棚分配问题(洛谷P2859)使用优先队列动态管理牛棚。每种问题都详细说明了算法原理并提供了C++实现代码,展示了贪心算法在区间问题中的高效应用。
2026-01-17 23:02:53
710
8
原创 《算法竞赛从入门到国奖》算法基础:入门篇-贪心算法(中)
本文分享了三个贪心算法题解:1.拼数问题通过自定义字符串比较规则实现最优拼接;2.Protecting the Flowers问题通过比较交换前后吃草量差异确定最优排序;3.奶牛杂技问题通过分析压扁指数推导最优堆叠顺序。每个问题都包含算法原理说明和完整C++实现代码,展示了贪心算法在不同场景下的应用。
2026-01-16 16:41:33
697
12
原创 《算法竞赛从入门到国奖》算法基础:入门篇-贪心算法(上)
本文介绍了贪心算法的基本思想及其在多个经典问题中的应用。贪心算法作为一种解题思想,需要具体问题具体分析,没有固定模板。文章通过货仓选址、最大子段和、纪念品分组、排座椅和矩阵消除五个例题,详细讲解了贪心策略的设计思路和实现方法。其中,货仓选址问题展示了中位数选择策略,最大子段和问题演示了动态维护子段和的技巧,纪念品分组则采用排序后双指针匹配的策略。文章特别指出,贪心算法的正确性往往难以证明,在竞赛中需要大胆尝试策略。每个问题都附有完整的代码实现,展现了贪心算法在实际编程中的应用。
2026-01-15 19:27:06
1133
12
原创 《算法竞赛从入门到国奖》算法基础:入门篇-二分算法
本文介绍了二分查找算法及其应用场景,重点讲解了在有序数组中查找元素边界的方法。文章首先解释了二分查找的基本原理,通过例题展示了如何查找元素的第一个和最后一个出现位置。接着介绍了二分查找的两种模板(查找左端点和右端点),并详细说明了模板选择的条件和注意事项。此外,文章还探讨了二分查找在答案求解中的应用,包括木材加工、砍树和跳石头等问题,展示了如何通过二分法寻找满足特定条件的最大值或最小值。最后提供了多个实际问题的代码实现,帮助读者理解二分查找的具体应用。
2025-12-24 21:54:07
1239
1
原创 《算法竞赛从入门到国奖》算法基础:入门篇-双指针
本文介绍了双指针(滑动窗口)算法及其应用。通过四个例题(唯一的雪花、逛画展、字符串、丢手绢)展示了双指针算法的实际应用场景。文章详细讲解了每个题目的解题思路,包括如何利用双指针优化暴力枚举,如何维护合法区间,以及如何更新最优解。所有题目都提供了完整的C++实现代码,展示了双指针算法在解决特定问题时的简洁性和高效性。特别强调了双指针算法的核心思想:两个指针无需回退,只需单次遍历即可获得最优解。
2025-12-16 13:31:55
1067
9
原创 《算法竞赛从入门到国奖》算法基础:入门篇-差分
本文介绍了差分算法及其应用场景。差分数组通过存储相邻元素的差值,能够高效处理区间增减操作,将O(n)时间复杂度优化为O(1)。文章详细讲解了一维差分和二维差分的实现原理:一维差分只需修改区间两端点,二维差分则需要修改四个边界点。通过三个例题(模板差分、海底高铁、地毯问题)展示了差分算法的实际应用,包括代码实现。差分算法本质是空间换时间的预处理方法,与前缀和互为逆运算,特别适合处理大量区间统一增减操作的需求。
2025-12-12 16:35:13
976
8
原创 《算法竞赛从入门到国奖》算法基础:入门篇-前缀和
本文介绍了前缀和算法的原理与应用,包括一维前缀和、最大子段和、二维前缀和以及激光炸弹问题。前缀和通过预处理数组将区间查询复杂度优化为O(1),用空间换时间。一维前缀和通过f[i]=f[i-1]+num构建数组,快速计算区间和;最大子段和利用前缀和数组寻找f[y]-f[x]的最大值;二维前缀和通过递推公式计算子矩阵和;激光炸弹问题则结合二维前缀和枚举m*m正方形区域。文中提供了各算法的代码实现,展示了前缀和在优化暴力枚举中的重要作用。
2025-12-11 14:25:32
956
17
原创 《算法竞赛从入门到国奖》算法基础:入门篇-枚举
本文介绍了枚举算法及其优化方法,主要内容包括: 普通枚举应用:通过铺地毯、回文日期和扫雷三个案例,展示了如何通过逆向思维、数学推导和递推等方法优化枚举过程,减少不必要的计算。 二进制枚举技巧:以子集问题和费解的开关问题为例,演示了如何利用二进制位表示选择状态,将组合问题转化为二进制数遍历,实现高效枚举。 算法优化思路:强调针对不同问题特性设计特定枚举策略,如从后往前遍历、利用对称性简化计算等,避免数据量大时超时。 文章通过具体代码实现展示了枚举算法的实际应用,帮助读者掌握暴力枚举的优化技巧。
2025-12-11 10:56:47
1330
12
原创 《算法竞赛从入门到国奖》算法基础:入门篇-高精度
本文介绍了四种高精度运算的实现方法:加法、减法、乘法和除法。针对大数运算超出基本数据类型范围的问题,采用字符串存储数字并模拟竖式计算过程。其中加法、减法通过倒置字符串从低位开始计算;乘法采用预分配数组暂存中间结果;除法则从高位开始处理。所有运算都考虑了进位/借位处理,并注意去除结果的前导零。文章提供了完整的C++实现代码,适用于处理超大整数的基本运算需求。
2025-12-09 22:09:16
1150
11
原创 《算法竞赛从入门到国奖》算法基础:入门篇-模拟
本文介绍了三种典型模拟题的解题思路与实现代码:1. 多项式输出(NOIP2009普及组)重点处理系数、符号和幂次的特殊情况;2. 蛇形方阵使用方向向量控制数字填充路径;3. 字符串展开根据参数处理字符转换、重复和倒置。这些题目展现了模拟题的特点:将题目要求直接转化为代码逻辑,同时需要注意各种边界条件和特殊情况处理。文章提供了完整的C++实现代码,适合算法初学者学习模拟类问题的解决方法。
2025-12-09 19:18:43
1023
10
原创 从零开始的C++学习生活 20:数据结构与STL复习课(4.4w字全解析)
本文系统性地复习了C++中的数据结构与STL容器,主要内容包括: 复杂度分析:介绍了时间与空间复杂度的概念,包括O(1)、O(logn)、O(n)等常见复杂度类型及其计算方法。 线性数据结构:详细讲解了顺序表、链表、栈和队列的实现原理与核心操作,比较了它们的特点与适用场景。 非线性数据结构:深入剖析了树结构(二叉树、AVL树、红黑树)、哈希表和位图等复杂数据结构的实现机制与性能特点。 排序算法:全面对比了插入、选择、交换、归并等经典排序算法的时间复杂度与适用条件。
2025-11-01 02:41:29
1896
22
原创 从零开始的C++学习生活 19:C++复习课(5.4w字全解析)
本文是一篇C++复习指南,系统性地总结了C++的核心语法和特性。主要内容包括: C++基础语法:命名空间、引用、函数重载、内联函数和nullptr等新特性; 面向对象编程:类和对象、继承与多态、运算符重载、友元关系等; 内存管理:new/delete与malloc/free区别、内存泄漏问题及智能指针解决方案; 模板编程:函数模板、类模板及其特化; C++11新特性:范围for循环、右值引用、lambda表达式和包装器等; 异常处理机制和智能指针原理。 文章通过大量代码示例详细讲解了各个知识点
2025-10-31 21:20:16
1261
23
原创 从零开始的C++学习生活 18:C语言复习课(期末速通)
本文系统梳理了C语言的核心知识点,从基础数据类型、控制结构到高级特性如指针、结构体和内存管理。内容包括:1. 数据类型与变量;2. 运算符优先级规则;3. 条件/循环控制结构;4. 函数定义与调用;5. 数组和字符串处理;6. 指针原理及应用(包括二级指针、函数指针);7. 结构体/联合体内存对齐;8. 动态内存分配和文件操作;9. 编译链接过程详解。特别强调了指针操作、内存管理和编译原理等难点,配有代码示例和注意事项,适合系统复习C语言基础。
2025-10-30 20:57:44
1631
20
原创 从零开始的C++学习生活 17:异常和智能指针
本文深入探讨了C++异常处理与智能指针的关键技术。异常处理通过throw抛出对象传递错误信息,由catch捕获处理,实现了错误检测与处理的分离。智能指针(unique_ptr、shared_ptr、weak_ptr)基于RAII思想自动管理资源,解决了内存泄漏问题。文章详细解析了异常匹配规则、栈展开过程、智能指针实现原理与使用场景,特别强调了shared_ptr循环引用问题及weak_ptr解决方案。通过对比传统内存管理的缺陷,展示了智能指针在异常安全方面的优势,并提供了内存泄漏检测与防护策略。最后总结指出
2025-10-29 21:59:51
930
10
原创 从零开始的C++学习生活 16:C++11新特性全解析
本文系统介绍了C++11的核心特性,包括:1. 列表初始化:统一使用{}初始化语法,支持std::initializer_list容器初始化;2. 右值引用与移动语义:通过区分左值/右值实现资源高效转移,包括移动构造、移动赋值及完美转发;3. 可变参数模板:支持任意数量参数的函数和类模板,配合包扩展机制;4. Lambda表达式:提供匿名函数对象,支持捕获列表;5. 包装器:function统一包装可调用对象,bind调整参数;6. 类功能增强:默认移动操作、final/override等关键字。这些特性大
2025-10-27 22:26:30
1441
10
原创 从零开始的C++学习生活 15:哈希表的使用和封装unordered_map/set
本文介绍了基于哈希表实现的unordered_map和unordered_set容器。首先对比了哈希表与红黑树实现的map/set在性能要求、迭代器特性等方面的差异,重点讲解了哈希函数设计、冲突处理策略(开放定址法和链地址法)等底层原理。文章详细分析了如何通过模板特化和素数表优化哈希表实现,并提供了完整的封装方案,包括迭代器实现和关键方法如insert/find/erase的操作细节。最后总结了哈希表在字符串处理、大数据分析等场景的性能优势,为开发者提供了容器选型建议和工程实践指导。
2025-10-24 20:18:03
1323
11
原创 从零开始的C++学习生活 14:map/set的使用和封装
本文全面解析了C++ STL中的map和set关联式容器。首先对比了序列式容器和关联式容器的特性差异,重点介绍了set和map的基本操作,包括构造、遍历、增删查等功能。文章深入探讨了map的operator[]实现原理,并分析了multiset/multimap的差异。通过剖析红黑树底层实现,详细讲解了map和set如何通过模板参数和仿函数实现泛型设计,包括迭代器operator++/operator--的核心算法。最后总结了这些容器在性能优化和算法简化方面的重要价值,为深入理解STL设计思想和提升编程能力
2025-10-24 16:08:20
1093
9
原创 从零开始的C++学习生活 13:红黑树全面解析
本文深入解析了红黑树的核心概念与实现。红黑树是一种自平衡二叉搜索树,通过颜色规则(根黑、红节点子必黑、路径黑数相同)确保最长路径不超过最短路径两倍。文章详细介绍了插入操作的变色与旋转处理(单旋/双旋),并提供了C++实现代码,包括节点结构、插入逻辑和验证方法。与AVL树相比,红黑树平衡要求更宽松,旋转操作更少,性能更稳定。通过规则约束,红黑树保证了高效的查找、插入操作(O(logN)时间复杂度)。
2025-10-23 22:54:43
1261
3
原创 从零开始的C++学习生活 12:AVL树全面解析
本文详细介绍了AVL树的自平衡原理与实现。AVL树通过平衡因子控制树的高度,确保查找效率始终为O(logN)。文章讲解了AVL树的四种旋转操作(左单旋、右单旋、左右双旋、右左双旋)及其代码实现,分析了插入和删除操作中的平衡调整策略。作者通过具体示例和代码演示了如何维护AVL树的平衡性,并提供了平衡检测方法。AVL树虽然实现复杂,但为理解更高级数据结构(如红黑树)奠定了基础,适用于查找频繁的场景。
2025-10-21 15:40:28
1152
11
原创 从零开始的C++学习生活 11:二叉搜索树全面解析
本文系统介绍了二叉搜索树(BST)的原理与实现。首先阐述了BST的基本概念和性质,即左子树节点值小于等于根节点,右子树节点值大于等于根节点。其次详细分析了查找、插入、删除三种核心操作的实现方法,其中删除操作根据子节点情况分为四种处理方式。文章还探讨了BST的两种应用场景:纯key模型(如车牌识别系统)和key-value模型(如中英字典)。最后指出BST在有序数据输入时会退化为O(n)时间复杂度的链表结构,并介绍了AVL树、红黑树等平衡二叉搜索树的优化方案,强调理解BST对学习更复杂数据结构的重要性。
2025-10-21 14:11:09
823
9
原创 从零开始的C++学习生活 10:继承和多态
本文深入探讨了C++中继承和多态的核心概念及其实现机制。在继承方面,详细介绍了三种继承方式、基类与派生类转换规则、作用域处理原则等基础内容;在多态方面,重点讲解了虚函数机制、重写规则、虚函数表原理等关键技术。文章还分析了菱形继承问题及虚继承解决方案,并介绍纯虚函数和抽象类等高级特性。通过大量代码示例,展示了如何在实际开发中运用这些面向对象特性来构建灵活、可扩展的软件架构。全文从基础语法到底层实现,系统性地讲解了继承和多态在C++中的完整知识体系。
2025-10-19 23:23:14
1547
7
原创 从零开始的C++学习生活 9:stack_queue的入门使用和模板进阶
本文深入探讨了C++ STL中的容器适配器stack、queue和priority_queue,以及模板的进阶特性。主要内容包括:1. 容器适配器部分:详细解析了stack和queue的LIFO/FIFO特性、基本操作及模拟实现,重点分析了priority_queue的堆结构实现原理;探讨了deque作为默认底层容器的优势。2. 模板进阶部分:介绍了非类型模板参数的使用限制,深入讲解了函数模板特化和类模板特化(全特化与偏特化),并分析了模板分离编译问题的原因及解决方案。文章通过大量代码示例,帮助读者掌握这些
2025-10-17 19:25:22
1708
7
原创 从零开始的C++学习生活 8:list的入门使用
本文深入探讨了C++ STL中的list容器。作为基于双向链表的序列容器,list具有高效插入删除(O(1))、迭代器稳定等特性,但牺牲了随机访问能力。文章详细介绍了list的基本使用(构造、迭代器、增删改查)、特有操作(合并、排序、去重)、迭代器失效问题,并通过模拟实现解析了其底层结构。同时对比了list与vector的特性差异,指出vector适合随机访问频繁场景,而list更适合任意位置频繁插入删除的情况。最后提供了性能优化建议,帮助开发者根据实际需求选择合适的容器。
2025-10-14 16:30:14
1823
15
原创 从零开始的C++学习生活 7:vector的入门使用
本文介绍了C++中vector容器的基本使用和实现原理。vector是标准库中的动态数组,支持动态扩容、随机访问和连续存储。文章详细讲解了vector的构造方法、迭代器使用、容量管理、元素访问和修改操作,重点分析了迭代器失效问题及其解决方案。同时展示了vector的模拟实现代码,包括深拷贝处理、插入删除操作等核心功能。最后给出了性能优化建议,如预分配空间、使用emplace_back等。掌握vector的底层实现有助于更好地理解和使用这一重要容器。
2025-10-14 16:03:56
1347
12
原创 从零开始的C++学习生活 6:string的入门使用
本文介绍了C++中string类的重要性及其使用方法。相比C语言字符串处理方式,string类解决了手动管理内存、易越界访问等问题,提供了更安全高效的字符串操作接口。文章详细讲解了string类的构造、容量操作、访问遍历、修改功能等常用方法,并分析了浅拷贝与深拷贝的区别及实现方案。通过模拟实现string类,帮助读者深入理解其底层原理。最后建议通过实现String类、完成LeetCode题目等方式巩固所学知识。掌握string类对算法竞赛、日常开发及面试都具有重要意义。
2025-10-09 23:08:57
1113
4
原创 从零开始的C++学习生活 5:内存管理和模板初阶
本文介绍了C++中内存管理和模板编程的核心内容。在内存管理方面,详细对比了C语言的malloc/calloc/realloc与C++的new/delete操作符,重点分析了它们在使用方式、初始化能力、类型安全和构造/析构函数调用等关键差异。在模板编程部分,深入讲解了函数模板和类模板的概念、语法格式及其实现原理,包括模板的隐式和显式实例化过程,以及模板参数匹配规则。文章通过具体代码示例,展示了模板如何解决代码冗余问题,实现泛型编程,为C++程序员提供了更高效的内存管理和代码复用方案。
2025-10-07 14:15:08
1040
4
原创 从零开始的C++学习生活 4:类和对象(下)
本文深入探讨C++类和对象的高级特性,包括构造函数初始化列表、static成员、友元机制、内部类、匿名对象及编译器优化。重点讲解了初始化列表的使用规则与注意事项,static成员变量的定义方式和访问限制,友元函数和友元类的单向访问特性,以及内部类作为外部类友元的特性。文章还介绍了匿名对象的生命周期和实用场景,并分析了编译器对对象构造和拷贝的优化策略。这些特性共同构成了C++面向对象编程的核心机制,能帮助开发者编写更高效、更灵活的代码。
2025-10-06 19:50:09
1375
6
原创 从零开始的C++学习生活 3:类和对象(中)
本文深入探讨了C++类和对象中的默认成员函数机制,包括构造函数、析构函数、拷贝构造函数和赋值运算符重载等核心概念。文章详细解析了每种成员函数的特点、使用场景和实现规则,特别强调了资源管理类需要实现深拷贝和析构函数的重要性。同时介绍了运算符重载、const成员函数等高级特性,并通过日期类实现示例展示了这些概念的实际应用。文章指出,正确理解和使用这些默认成员函数是掌握C++面向对象编程的关键,可以帮助开发者编写更安全、高效的代码。
2025-10-05 14:14:06
1451
3
原创 从零开始的C++学习生活 2:类和对象(上)
本文介绍了C++类的核心概念,包括:1. 类定义:使用class关键字封装成员变量和函数,支持访问控制(public/private/protected)2. 类特性:类作用域、对象实例化过程、内存对齐规则(空类大小为1字节)3. this指针:隐含指针自动标识当前对象,解决成员函数区分问题4. 与C结构体对比:C++类提供更好的封装性、更简洁的接口和更安全的内存管理5. 面向对象优势:通过封装提高代码安全性、简化接口、便于维护 文章通过Stack类的实现示例,展示了C++类如何将数据和操作封装在一起,为后
2025-10-04 17:59:48
1076
4
原创 从零开始的C++学习生活 1:命名空间,缺省函数,函数重载,引用,内联函数
本文是一篇C++入门教程,主要介绍了C++相对于C语言的新特性。文章首先概述了C++的发展历程和应用领域,然后详细讲解了命名空间、缺省函数、函数重载、引用、内联函数和nullptr等核心概念。通过对比C语言,突出了C++在面向对象编程、代码复用和安全性方面的优势。文中包含丰富的代码示例,如命名空间的使用、函数重载的实现、引用的特性演示等,并特别强调了这些特性在实际项目中的应用场景。最后通过一个简单的学生管理系统综合示例,展示了如何将这些特性结合使用。文章适合具备C语言基础的读者学习C++的入门知识。
2025-10-04 16:50:57
1331
4
原创 C语言排序-11种算法带你彻底扫清排序问题
本文全面介绍了11种常见排序算法,涵盖基本概念、应用场景和具体实现。从基础⽓泡排序、插⼊排序到⾼效的快速排序、归并排序,再到特殊场景的计数排序,详细解析了每种算法的核⼼思想、代码实现和时间复杂度分析。通过性能测试对比,展⽰了不同算法在⼤数据量下的表现差异,并提供了根据数据特点选择合适排序⽅法的实⽤建议。快速排序和归并排序在⼀般场景表现⾼效,⽽计数排序在整数范围较⼩时表现突出。本⽇志强调理解算法原理的重要性,帮助读者掌握根据实际需求选择最优解法能
2025-10-02 20:27:36
1242
5
原创 (C语言数据结构)二叉树-概念-性质-存储结构-遍历-代码实现层层刨析
树是一种非线性数据结构,由n(n>0)个有限节点组成一个具有层次关系的集合。它看起来像一棵倒挂的树,根朝上,叶朝下。有一个特殊的根节点,没有前驱节点除根节点外,其余节点被分成M(M>0)个互不相交的集合T₁, T₂, ..., Tₘ每个子集Tᵢ又是一棵结构与树类似的子树注意:在树形结构中,⼦树之间不能有交集,否则就不是树形结构如果树中的节点没有子辈关系却相交了,则不为树结构,而是图二叉树是节点的有限集合,该集合:或者为空或者由一个根节点加上两棵分别称为左子树和右子树的二叉树组成。
2025-10-02 16:51:53
947
5
原创 C语言栈和队列详解:从原理到代码实现到相关题目讲解
本文介绍了栈和队列两种基础数据结构的原理、实现方式和应用场景。栈采用后进先出(LIFO)原则,通过数组实现并提供了压栈、出栈等操作;队列遵循先进先出(FIFO)原则,使用链表实现支持入队、出队等功能。文章还包含三个典型算法题解:有效的括号匹配、用队列实现栈和用栈实现队列,展示了数据结构的实际应用。最后通过循环队列的实现,说明了如何优化空间利用率。这些内容为理解基础数据结构及其应用提供了清晰指导。
2025-09-22 22:59:11
876
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅