- 博客(28)
- 收藏
- 关注
原创 C++ STL set 详解:有序容器的艺术与科学
自动排序:元素按特定顺序(默认升序)存储唯一性约束:禁止重复元素插入(类似数学集合)cppset<int> s;// 插入成功返回pair迭代器// 自动排序为 {1,3}// 重复元素插入失败return 0;cpp// 注意:这里用>实现降序// 存储 {5,3,1}cppint age;// 自定义比较器(按年龄升序,年龄相同按姓名降序)// 会插入成功(姓名不同)cpp// 错误示例if (it!(*it) = 30;// 禁止修改元素值!
2025-04-24 11:40:35
351
原创 C++ STL priority_queue 详解:从基础到自定义类型
优先队列是一种特殊的容器,它的特点是每次取出的元素都是优先级最高的。就像医院急诊室的叫号系统:重伤患者(高优先级)会优先于普通患者(低优先级)被处理。当处理自定义类型(如Person类)时,编译器无法自动判断元素优先级。示例需求:按年龄从大到小排序,年龄相同按姓名字母序排序。// 重载<运算符(影响默认排序规则)// 年龄相同按名字升序// 年龄降序排列// 使用方式// 自动使用operator<规则cpp// 定义比较器(不修改原类)
2025-04-24 11:36:21
698
原创 深入解析C++ STL Queue:先进先出的数据结构
cpp// 使用list作为底层容器(支持中间插入删除)// 底层调用list::push_back// 使用vector作为底层容器(需预分配空间)性能对比底层容器push操作pop操作内存连续性适用场景dequeO(1)O(1)否通用场景(默认选择)vectorO(1)O(1)是预知最大容量listO(1)O(1)否频繁中间操作FIFO原则的完美实现底层容器适配器的灵活选择高效O(1)时间复杂度的操作选择建议。
2025-04-23 17:43:28
534
原创 深入解析C++ STL Stack:后进先出的数据结构
cpp// 使用vector作为底层容器// 底层调用vector::push_back// 使用list作为底层容器// 底层调用list::push_back性能对比底层容器push操作pop操作内存连续性适用场景dequeO(1)O(1)否通用场景(默认选择)vectorO(1)O(1)是预知最大容量listO(1)O(1)否频繁中间插入删除LIFO原则的完美实现底层容器适配器的灵活选择高效O(1)时间复杂度的操作选择建议。
2025-04-23 17:39:22
530
原创 深入解析C++ STL List:双向链表的特性与高级操作
双向链表结构带来的高效插入删除迭代器的稳定性优势与其他容器的适用场景对比选择建议需要频繁在两端操作 → 优先考虑deque需要随机访问 → 选择vector需要大量中间插入删除 → list是最佳选择扩展学习研究list的底层节点分配策略实现自定义的链表容器对比不同STL容器的迭代器实现。
2025-04-22 11:37:37
792
原创 深入解析C++ STL Vector:从基础操作到迭代器管理
本文通过完整代码示例,系统讲解了vector的核心操作与底层机制。高效内存管理性能优化容器选择策略随着C++标准的发展,vector持续增强功能(如C++11的emplace_back)。建议开发者结合具体场景,在vector、list、deque等容器中做出最优选择。
2025-04-22 11:32:19
1063
原创 C语言实现堆(优先队列)详解
堆(Heap)是一种特殊的完全二叉树结构,满足任意节点的值都大于等于(或小于等于)其子节点的值。本文实现的是最大堆(大根堆)。插入元素:时间复杂度O(logn)弹出最大值:时间复杂度O(logn)c// 数据存储空间int* data;// 指向__data[1]的指针int size;// 最大容量int n;// 当前元素个数使用动态数组实现堆,data指针指向__data[1]的位置,使得数组下标从1开始计算,便于父子节点访问。c。
2025-04-21 22:17:42
994
3
原创 C语言实现队列(链表实现)超详细教程(图解+代码逐行分析)
队列(Queue)是一种先进先出(FIFO)的线性数据结构,在任务调度、消息队列等场景广泛应用。本文通过C语言实现基于链表的队列结构,特别针对初学者设计,包含完整代码注释和实现原理图解。cint data;// 节点存储的数据// 指向下一节点的指针} Node;内存结构cNode head;// 虚拟头节点(head.next指向首元素)Node* tail;// 尾指针(指向链表末尾)} LinkList;设计说明使用虚拟头节点统一插入操作tail指针加速尾部插入操作c。
2025-04-21 21:08:25
918
原创 C语言实现哈希表数据结构超详细教程(图解+代码逐行分析)
ctypedef struct Node { // 链表节点char* s;// 存储字符串// 下一节点指针} Node;Node* data;// 哈希桶数组(每个元素是链表头节点)int cnt;// 当前元素总数int size;// 哈希表容量内存结构哈希桶数组:...实现要点链地址法处理冲突动态扩容策略高效的内存管理扩展方向实现删除操作支持泛型数据类型添加迭代器功能实现开放寻址法版本应用场景高速缓存系统数据库索引编译器符号表分布式系统路由器。
2025-04-20 23:20:11
985
原创 C语言实现跳表数据结构超详细教程(图解+代码逐行分析)
cint key;// 节点存储的值int level;// 所在层级(0为最底层)// 同层下一节点指针// 下层对应节点指针// 上层对应节点指针} Node;内存结构cNode* head;// 头节点(各层链表起点)Node* tail;// 尾节点(各层链表终点)// 最大层级限制} Skiplist;初始化示例实现要点多层链表的垂直连接管理概率晋升机制实现高效的查找路径优化扩展方向实现节点删除功能添加自动调整层级功能实现范围查询操作应用场景Redis有序集合。
2025-04-20 23:03:18
528
原创 基于控制台的小车导航游戏开发详解(C++实现)
玩家可创建多辆具有不同初始位置和移动速度的小车每辆小车需要在二维地图中从起点(S)移动至终点(E)使用wasd键控制移动方向:w:向上移动a:向左移动s:向下移动d:向右移动实时显示地图和小车位置,统计最终成功数量及最短耗时。
2025-04-19 17:20:06
941
原创 C语言实现二叉树数据结构超详细教程(图解+代码逐行分析)
二叉树是计算机科学中最基础的树形数据结构之一,在数据库索引、文件系统等领域广泛应用。本文通过C语言实现包含插入、遍历等基本操作的二叉树,特别针对初学者设计,包含完整代码注释和遍历过程图解。cint key;// 节点存储的值// 左子节点指针// 右子节点指针} Node;内存结构核心知识点二叉树节点的链式存储递归在树结构中的应用BFS与DFS的实现差异扩展方向实现二叉搜索树添加节点删除功能实现平衡二叉树(AVL树)相关练习:实现二叉树的高度计算、镜像翻转、路径查找。
2025-04-18 20:59:46
1250
原创 C语言实现队列数据结构超详细教程(图解+代码逐行分析)
c// 底层使用动态数组int size;// 队列最大容量int head;// 队头指针(起始位置)int tail;// 队尾指针(结束位置+1)int count;// 当前元素数量} Queue;结构图解实现要点回顾使用循环数组提升空间利用率通过count变量简化状态判断模块化设计(分离vector和Queue扩展建议添加扩容功能(动态调整数组大小)实现双端队列(允许两端操作)添加错误代码机制(区分不同错误类型)练习题目使用队列实现层序遍历模拟银行排队系统。
2025-04-18 20:53:44
926
原创 C语言实现栈数据结构超详细教程(图解+代码逐行分析)
栈(Stack)是一种重要的线性数据结构,具有后进先出(LIFO)的特性。它在函数调用、表达式求值、括号匹配等场景有广泛应用。本文将通过C语言完整实现栈结构,特别针对初学者设计,包含详细注释和实现原理分析。cint* data;// 存储元素的数组int size;// 栈的总容量int top;// 栈顶指针(初始为-1)} Stack;关键点top初始值为-1表示空栈size限制栈的最大容量使用动态数组实现顺序存储实现要点回顾使用动态数组实现顺序栈通过栈顶指针控制操作位置。
2025-04-17 21:02:33
897
原创 C语言实现链表数据结构超详细教程(图解+代码逐行分析)
链表是数据结构中最基础也是最重要的线性结构之一。相较于数组,链表具有动态内存分配的优势,可以更灵活地进行插入和删除操作。本文将通过C语言完整实现链表结构,并特别针对初学者设计,包含详细注释和图示说明。c#define _CRT_SECURE_NO_WARNINGS 1 // 禁用VS安全警告#define DL 3 // 定义数字显示宽度#define STR(n) #n // 将数字转为字符串。
2025-04-17 20:56:00
988
原创 C语言实现链表详解(适合初学者)
类比:把链表想象成一列火车,每个车厢(节点)装载货物(数据),车厢之间通过挂钩(指针)连接。// 指针域(连接下一个车厢的挂钩)node->next = p->next;// 新节点连接后续链表。// 前驱节点连接新节点。// 返回真正的头节点。// 创建虚拟头节点。// 计算箭头位置:n*(3+2) + 2。// 保存下一个节点地址。// 数据域(车厢里的货物)保存下一个节点的地址(q = p->next)// 补全代码(注意虚拟头节点使用)
2025-04-15 18:44:05
676
原创 C语言实现顺序表详解(适合初学者)
cint size;// 顺序表总容量int count;// 当前元素数量int* data;// 存储元素的数组指针} vector;size:顺序表最大容量(奶茶店当前能容纳的最大排队人数)count:当前元素个数(实际排队的人数)data:指向存储元素的数组(排队区域)
2025-04-15 18:38:09
1076
原创 BFS算法五连击:从入门到精通,解密Node结构体的千面应用
题目类型Node结构体成员设计要点核心作用多源同步扩散x, y最小信息原则坐标定位单源最短路径x, y, dist携带路径长度步数记录多源距离传播x, y, dist携带传播值距离计算数值传播x, y, val携带传播数值高度传递最优路径选择+ 排序携带评估值并支持优先队列智能路径选择核心启示按需定制:根据问题需求选择携带的附加信息算法适配:通过成员设计适配不同BFS变种(普通队列/优先队列)性能平衡:在信息携带量和计算效率之间寻找平衡点。
2025-04-15 18:25:13
788
原创 LeetCode 130. 被围绕的区域 DFS-详细题解
DFS/BFS遍历所有与起点颜色相同的像素,修改为新颜色(需注意边界条件和颜色相同判断)。// 未被标记的'O'需要转换为'X'dfs(board, row - 1, col);// 步骤2:转换内部'O'为'X',并恢复'T'为'O'// DFS函数:标记所有与边界相连的'O'为临时字符'T'// 边界检查:越界或当前字符不是'O'时直接返回。// 恢复标记的'O'
2025-04-11 20:41:56
582
原创 LeetCode 1631. 最小体力消耗路径 BFS-详细题解
我们需要找到一条从起点到终点的路径,使得路径中所有相邻格子的高度差的最大值最小。这个问题可以转化为一个最短路径问题的变种,但路径的“权重”不再累加,而是取路径中的最大值。路径的体力消耗由路径中相邻格子的高度差绝对值的最大值决定。要求找到一条路径,使得体力消耗值最小。:给定一个二维矩阵,找到一条从左上角到右下角的路径,使得路径中经过的格子的最小值最大。:当移动到相邻格子时,计算新的高度差,如果新的最大值比之前记录的更小,则更新路径。我们需要确保每次扩展的路径是当前已知的最优解(即最大高度差最小的路径)。
2025-04-11 20:31:19
1110
原创 蓝桥杯第十一届国赛B组第二题《扩散》解析 | BFS解法详解
本题通过 BFS 模拟扩散过程,结合坐标系平移和数组标记,高效解决了大范围扩散问题。关键点在于:坐标系平移处理负坐标。BFS 按层处理实现时间控制。标记数组避免重复计数。思考题的扩展方向可进一步加深对空间优化和几何计算的理解。
2025-04-03 19:20:11
899
原创 LeetCode 643. 子数组最大平均数 I - 滑动窗口
给定一个由n个整数组成的数组nums和一个整数k,要求找出长度等于k的连续子数组的最大平均数,并返回该最大平均数。答案的误差需小于10^-5。12.75解释:子数组的和为51,平均数为。5.00000。
2025-04-03 01:24:04
884
原创 LeetCode 1456. 定长子串中元音的最大数目 | 滑动窗口超详细解析
滑动窗口是一种高效的算法技巧,用于处理数组/字符串的子区间问题。它的核心思想是:维护一个固定或可变大小的“窗口”,通过移动窗口的左边界和右边界,避免重复计算。适用于需要遍历所有连续子区间的问题,如“最大子数组和”“最长无重复子串”等。类比理解想象你在看一个长度为k的火车车厢,每次只能看到连续的k节车厢。当火车前进时,你只需要关注新进入视野的车厢和离开视野的车厢,而不是重新数一遍所有车厢。滑动窗口是解决子串/子数组问题的利器,通过动态维护窗口边界和状态,避免重复计算。
2025-04-03 01:16:54
1173
原创 LeetCode 1254. 统计封闭岛屿的数目 - DFS
/ 矩阵太小,无法形成封闭岛屿。if (grid[i][j] == 0) { // 发现未访问的陆地。// 若未触及边界,计数器加一。:若矩阵行或列小于3,无法存在封闭岛屿(例如3x3矩阵的中间点需要四周被1包围)。// 边界检查:若当前坐标在矩阵边界且为陆地,标记为非封闭。时,启动一次独立的DFS,若该区域未触及边界,则计入结果。),若某块陆地无法触及矩阵边界,则为封闭岛屿。
2025-04-02 00:37:50
473
原创 LeetCode 2658. 渔夫的最大收益 - DFS
DFS 在连通区域问题中表现出色,通过递归或栈实现相邻节点的遍历。累加与标记:在 DFS 中累加鱼数并标记已访问。方向处理:覆盖上下左右四个方向。全局最大值:遍历所有可能的连通区域,记录最大值。
2025-04-02 00:30:51
902
原创 LeetCode 200. 岛屿数量 - DFS
DFS 是解决岛屿类问题的经典方法,通过递归或栈实现相邻陆地的遍历。标记已访问的陆地:防止重复计数。遍历方向:覆盖上下左右四个方向。边界检查:确保索引不越界。通过这种思路,可以高效解决类似问题欢迎指出不足之处!!!
2025-04-01 23:47:25
531
原创 LeetCode 994. 腐烂的橘子 - BFS
由于腐烂过程类似于多源扩散,BFS 可以逐层处理腐烂橘子,每一层对应一分钟的扩散。// 当前层的腐烂橘子数量。每次处理队列中当前层的所有节点(即同一时间腐烂的橘子),检查四个方向是否有新鲜橘子。// 记录新鲜橘子的数量。// 初始化队列,加入所有腐烂的橘子,并统计新鲜橘子的数量。// 如果还有新鲜橘子,返回 -1;遍历整个网格,将所有初始腐烂的橘子加入队列,作为 BFS 的起点。若有新鲜橘子,将其腐烂并加入队列,同时减少新鲜橘子的计数。统计初始新鲜橘子的数量,若数量为 0,直接返回 0。
2025-04-01 23:08:51
931
原创 第十届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组第五题——迷宫
/ 判断方向(dx[i] == 1代表行向下一格即代表字符'D'其他同理)要求找到从起点到终点的最短路径,若存在多个最短路径,需按字典序输出最小的路径。// 如果到达终点,记录路径。// 从起点 (0, 0) 开始。:每个节点保存从起点到当前坐标的路径字符串,到达终点时记录所有最短路径,最终取字典序最小的。:在遍历方向时,按字典序优先级(D→L→R→U)处理,确保最先找到的路径字典序最小。遍历方向时,生成对应字符(D/L/R/U)并检查合法性。
2025-04-01 22:12:31
1302
1
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
内容概要: C++ STL零基础生存指南:从Hello STL到掌握80%日常开发所需功能 通过学生成绩管理、词频统计等生活化案例,手把手教你使用: 容器三件套(vector/string/map)增
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助
2025-04-03
从C++的标准模板库(stl)中的个人总结的一些常见,实用的模板类和函数(不一定包含所有的,全面的功能介绍,只介绍比较基础的内容),对于提升编成开发效率和算法竞赛的提速有一定的帮助(会持续更新)
2025-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人