
数据结构笔记
文章平均质量分 79
陈大大陈
愿你手拥幸福。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
基于轻量 HTTP 库httplib搭建接口,结合 MySQL 实现用户数据持久化,利用 Redis 构建高性能缓存层,搭配nlohmann/json处理数据交互。原创 2025-04-24 09:10:19 · 820 阅读 · 3 评论 -
用共享内存和 FIFO 实现高效 IPC:从代码实战到原理深度剖析
大家好,今天咱们聊聊程序员界的「内存快递站」—— 共享内存。这玩意儿能让两个程序在内存里直接「传小纸条」,比发微信还快(毕竟不用走网络)。咱们用两段魔性代码演示,顺便聊聊怎么避免让程序在内存里「打架」。原创 2025-04-21 21:31:12 · 780 阅读 · 2 评论 -
Trie 树核心代码拆解:如何用 200 行实现搜索引擎级联想功能?
想象你有一个超级字典,输入「app」就能秒变「apple」「application」「applet」…… 这不是魔法,是 Trie 树(前缀树)在搞事情!你的代码里,Trie 树就是核心「单词挖掘机」,专门挖所有以输入前缀开头的单词。原创 2025-04-18 15:41:08 · 603 阅读 · 1 评论 -
C++ 异常处理:从入门到精通的 20 个实战技巧
想象一下,你正在驾驶一辆满载乘客的大巴车,突然遇到前方道路塌陷。如果没有刹车系统,大巴会直接冲进坑里;如果有刹车系统但没有安全带,乘客会在急刹车时受伤。C++ 异常处理机制就像是程序世界的 "刹车 + 安全带" 组合,让你在遇到意外时能够安全停车并保护资源。在 C++ 中,异常处理是一把双刃剑:用得好可以写出健壮的代码,用得不好会导致程序崩溃或性能下降。本文将通过 20 个实战案例,带你从基础到高级全面掌握 C++ 异常处理的核心技术,包括:异常处理的底层原理自定义异常体系设计多线程环境下的异常原创 2025-04-13 11:49:17 · 1304 阅读 · 0 评论 -
【红黑树养成记】从 0 到 1 实现你的专属 map 和 set,看这篇就够啦~ ✨
大家好呀~今天我们要认识一位超厉害的 “树界明星”——红黑树!它是一种自平衡的二叉搜索树,通过给每个节点涂上红色或黑色,严格遵守四条 “自律规则”,让自己始终保持 “优雅平衡”:根节点永远是小黑(黑色)小红(红色节点)的爸爸和叔叔必须是小黑(黑色节点)从任何节点到其后代空节点的路径上,黑色节点数量相等空节点视为小黑(黑色)正是这些规则,让红黑树在插入、删除时能快速调整,时间复杂度稳定在 O(logN),比普通二叉搜索树 “防秃” 能力强太多啦!💪原创 2025-04-11 19:44:40 · 1174 阅读 · 2 评论 -
从零带你底层实现unordered_map的代码补全
改了一下开散列,加入了哈希桶,上期忘记加上了,现在补上,不好意思。原创 2023-11-28 14:58:43 · 523 阅读 · 2 评论 -
从零带你底层实现unordered_map (2)
💯 博客内容:从零带你实现unordered_map😀 作 者:陈大大陈🚀 个人简介:一个正在努力学技术的准C++后端工程师,专注基础和实战分享 ,欢迎私信!💖 欢迎大家:这里是优快云,我总结知识和写笔记的地方,喜欢的话请三连,有问题请私信 😘哈希/散列:映射,关键字和另一个值建立一个关联关系。哈希表/散列表:映射,关键字和储存位置建立一个关联关系。哈希/散列是一种算法思想,而哈希表/散列表是基于这种算法思想而实现的一种数据结构,这点很容易混淆。上一篇博客介绍了两个解决哈希冲突的方法,原创 2023-11-28 14:20:30 · 1359 阅读 · 22 评论 -
(面试)谈谈我对C++面向对象特性的理解
总的来说,面向对象是一种方法,这种方法是用来组织设计和实现的。组织设计就是找到解决问题的思路。实现就是把代码写出来。面向对象关键的核心在于,对象是组织和实现主要关注的东西,而不是过程。原创 2023-10-07 20:10:03 · 1056 阅读 · 21 评论 -
爱玩粥的有福了,带图形界面的明日方舟皮肤的员工管理系统,数据结构期末实训满分。
这个程序底层是easyx图形库,通过在easyx上封装的一个工具类(即输入框、按钮、label等),是在此基础上开发的这个系统。我们期末的数据结构实训已经结束了,我凭借着一手粥批图形界面员工管理系统给老师整不会了,也是顺利得到优秀,接下来就给大家展示一下我一周的成果!原创 2023-07-03 10:49:42 · 932 阅读 · 40 评论 -
期末不知道如何复习数据结构的话,不妨点进来看看。看明白保你过。
本文适合最近要靠数据结构的同学们,代码附有详尽解释。原创 2023-06-22 23:04:00 · 863 阅读 · 48 评论 -
【LeetCode训练营 189】轮转数组详解
这道题目我目前有三种解法,你能想到第四种解法吗?评论区或者私信告诉我。原创 2023-06-13 22:34:17 · 1404 阅读 · 2 评论 -
【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)
复习到离散数学图论时,想起来这个算法,感觉很有写博客的必要!今天这篇博客就来讲一下查找最短路径的Dijkstra算法。Dijkstra 算法,是由荷兰计算机科学家 Edsger Wybe Dijkstra 在1956年发现的算法,戴克斯特拉算法使用类似广度优先搜索的方法解决赋权图的单源最短路径问题。Dijkstra 算法原始版本仅适用于找到两个顶点之间的最短路径,后来更常见的变体固定了一个顶点作为源结点然后找到该顶点到图中所有其它结点的最短路径,产生一个最短路径树。本算法每次取出未访问结点中距离最小的原创 2023-06-05 23:50:55 · 7925 阅读 · 47 评论 -
【数据结构】插入排序详细图解(一看就懂)
我们将原数组空间看成两个部分,前边是有序部分,后边是无序部分,有序部分我们默认为它就已经是排好序的,在尾部新加入的元素有可能会导致整个有序数组变得无序,因此我们需要进行调整。调整方式就是将新加入的元素进行对比并往前移动,新加入元素和它前边的元素进行对比,如果它比它前边的元素小,则二者互换位置,不断重复这个过程,直到它前边的元素小于它才会停止,这样一来,他就仍然是有序数组。原创 2023-05-31 11:59:45 · 2988 阅读 · 57 评论 -
【数据结构】向上调整建堆和向下调整建堆的天壤之别以及堆排序算法
我们仍旧按最坏的情况来算。最后一层的每个节点都需要向上调整h-1次,光最后一层调整的次数就已经有2^(h-1)*(h-1)次了。光看这一层可以看出差距。上一条讲的向下调整的特点是节点多的层级调整的次数少,是少乘多。而现在讲的向上调整恰恰相反。节点多的层级调整的次数多,是多乘多,这就造成了时间复杂度的巨大差异。同样来计算一下。假设高度为h。F(h)=2^1*1+2^2*2+……+2^(h-2)*h-2+2^(h-1)*(h-1)同样使用错位相减,解得F(h) = 2^h原创 2023-05-25 20:13:49 · 1436 阅读 · 36 评论