自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 红黑树:比AVL更“聪明”的平衡树,拆解那些反直觉的核心难点

红黑树与AVL树的本质差异在于平衡代价:AVL追求严格平衡但维护成本高,红黑树通过5条颜色规则实现软平衡,降低旋转频率。红黑树插入仅需处理连续红节点(最多2次旋转),删除则聚焦黑高修复(最多3次旋转)。其设计亮点包括:新节点默认红色减少破坏、哨兵节点简化边界判断、旋转配合改色而非单纯调整高度。这种权衡使红黑树在增删操作上性能更优,成为工业界主流选择。理解红黑树的关键在于把握"用颜色约束替代高度约束"的核心思想,所有复杂操作都是为了以最小代价维持近似平衡。

2025-12-14 13:22:33 735

原创 AVL 树:从递归到迭代,吃透平衡二叉树的插入与删除

本文详细解析了AVL树的核心原理与实现方法。首先通过BST退化为链表的例子说明AVL树的必要性,指出其通过平衡因子和旋转操作保持高效查询性能(O(logn))。文章系统讲解了AVL树的三个核心概念:平衡定义、关键术语和四种旋转操作,并提供了完整的C语言实现代码。 重点对比了递归版和迭代版实现,详细介绍了路径记录和平衡调整的实现方法 文章特别强调旋转操作的本质是让子节点当父节点,这一理解对后续学习红黑树等高级数据结构至关重要。

2025-12-07 18:01:34 1169

原创 二叉树遍历:用 “巷子里捡宝贝” 讲透,走一遍就懂!

本文用 “巷子里捡宝贝” 的通俗类比,拆解二叉树前序、中序、后序、层序四种遍历逻辑:核心是按 “巷口(根)、左岔巷(左子树)、右岔巷(右子树)” 的不同顺序捡宝。递归遍历像组队分工,省心高效;迭代遍历需用栈记 “回头路”,其中后序遍历推荐业界标准的 prev 指针法(无侵入性、省空间),层序则靠队列按层逛。全篇用生活化场景 + 简洁代码,让新手轻松理解遍历本质,快速掌握实操技巧。

2025-11-29 20:07:16 1008

原创 KMP 算法手把手教学(C 语言实现)

对于模式串pattern[0…m-1],前缀函数π[i]表示:子串pattern[0…i]中,最长的相等前缀和后缀的长度;前缀和后缀不能是子串本身(否则长度就是 i+1,没有意义)。索引 i子串 pattern [0…i]可能的相等前后缀最长长度 π[i]0“A”无(只有 1 个字符)01“AB”前缀 “A”、后缀 "B"→不相等02“ABA”前缀 “A”、后缀 "A"→相等;前缀 “AB”、后缀 "BA"→不相等13“ABAB”

2025-11-22 18:50:29 1113

原创 C 语言实现哈希表:基于链地址法的完整实现与深度解析

本文详细讲解整数键哈希表的C语言实现,涵盖哈希函数、冲突处理、自动扩容等核心功能。通过链地址法解决冲突,支持插入、删除、查询等操作。文章从哈希表原理出发,逐步解析数据结构设计、辅助函数实现和核心功能模块,帮助初学者理解哈希表工作机制。代码结构清晰,包含素数判断、内存管理等优化措施,可直接编译运行。特别强调负载因子控制、负数键处理等关键细节,为C语言开发者提供实用的哈希表实现方案。

2025-11-15 19:13:07 917

原创 链表反转的5种方法

摘要:本文介绍了5种链表反转方法。最优解是双指针迭代法,通过移动两个指针逐步反转节点指向,时间O(n),空间O(1)。头插法通过重建新链表实现反转,复杂度与迭代法相同。递归法将问题分解为处理当前节点与已反转部分的关系,时间O(n),但空间O(n)可能栈溢出,可用尾递归优化。栈方法利用LIFO特性压栈弹出实现反转,时间O(n)但需额外空间。实际开发推荐迭代法和头插法,递归适合理解原理但不推荐生产环境使用。

2025-11-15 15:26:26 580

原创 C 语言实现学生信息管理系统(链表 + 双格式文件存储)

本文介绍了一个基于C语言的学生信息管理系统,采用单链表数据结构实现动态管理。系统支持学生信息的增删改查、表格化打印和文件存储功能,重点解决了以下技术难点:1) 使用fgets和缓冲区清理确保输入安全;2) 完善的输入校验机制;3) 二级指针实现安全的内存管理;4) 支持文本(制表符分隔)和二进制两种存储格式;5) 特殊处理含空格姓名的读取。系统通过结构化设计实现了链表操作、文件I/O、数据校验等核心功能的有机结合,可作为C语言学习的综合实践案例。

2025-11-09 14:09:11 1162

原创 单链表的增删改查

单链表是一种基础数据结构,由包含数据域和指针域的节点组成,支持高效动态操作。本文介绍了单链表的核心操作,包括节点定义、头节点创建以及插入(头插、尾插、指定位置)和删除(按值、按位置)方法。插入操作通过调整指针实现,头插法效率高但逆序排列,尾插法顺序排列但效率较低。删除操作需要定位目标节点及其前驱。此外还包含查询和修改功能,如按位置或值查找节点。单链表在内存非连续分布,适合频繁插入删除场景,但需注意指针管理和内存释放问题。

2025-11-02 18:00:45 456

原创 适合新手快速排序

核心3步:随机选取基准元素,单指针指针分区,递归处理子区间.随机种子只初始化1次。每次分区不能包含已排好的基准元素,否则会导致无限递归。

2025-10-26 18:25:49 267

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除