自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构---哈夫曼树的实现

哈夫曼树是一种带权路径长度最短的最优二叉树,主要用于数据压缩领域。本文介绍了哈夫曼树的基本概念,包括节点路径长度、带权路径长度(WPL)等前置知识,详细说明了哈夫曼树的构造过程:通过不断合并权值最小的两个节点形成新节点,最终构建完整的树结构。文章还提供了哈夫曼树的代码实现,包括节点结构定义、查找最小权值节点、构建哈夫曼树以及生成哈夫曼编码的具体算法。哈夫曼编码利用左0右1的规则生成不等长前缀编码,能有效压缩数据长度,提高传输效率。理解哈夫曼树的构建原理和编码生成方法是实现高效数据压缩的关键。

2025-11-11 17:23:48 913

原创 数据结构---并查集实现

本文介绍了并查集这一数据结构的基本原理和两种实现方式。并查集主要用于处理元素集合的合并与查询操作,核心功能包括判断元素是否同属一个集合和将两个集合合并。文章详细讲解了快速查找型(查询O(1)合并O(n))和快速合并型(查询O(logn)合并O(logn))两种实现方法,并提出了优化技巧:按集合大小合并和路径压缩。代码实现部分展示了两种类型的初始化、查找、判断和合并操作的具体C语言实现。该数据结构在计算机科学中广泛应用于网络连通性检测、图论算法等领域。

2025-11-07 20:41:50 470

原创 数据结构---平衡二叉树的实现

本文介绍了平衡二叉树的实现原理与代码实现。平衡二叉树通过旋转操作解决二叉搜索树可能出现的失衡问题,保持查询效率。文章详细讲解了四种失衡类型(LL、LR、RR、RL)及其处理方法:LL/RR型通过单次旋转,LR/RL型通过两次旋转完成平衡。代码实现部分展示了节点结构定义、中序遍历、左/右旋操作以及插入节点的具体过程,其中插入时自动检测并修正失衡状态。平衡二叉树相比普通二叉搜索树能更高效地维持最优搜索性能。

2025-11-02 15:42:06 680

原创 数据结构---二叉搜索树的实现

本文介绍了二叉搜索树的基本概念和实现方法。二叉搜索树是一种特殊的二叉树,其左子树节点值均小于根节点,右子树节点值均大于根节点。文章详细讲解了二叉搜索树的数据结构定义、创建方法,以及插入(递归和非递归)、删除、遍历、求高度和查找等核心操作的C语言实现。其中重点说明了删除节点时需要处理三种不同度的情况,并保持二叉搜索树的性质不变。通过中序遍历可以得到有序序列,查找效率接近二分查找。

2025-09-09 17:25:09 286

原创 数据结构---线索二叉树的实现

摘要: 本文介绍了线索二叉树的实现原理与代码实现。线索化通过标记空指针指向前驱/后继节点,将普通二叉树转换为线索二叉树,提升遍历效率。文章详细讲解了线索化过程(中序遍历)、节点结构设计(包含lTag/rTag标志位),并提供了完整的C语言实现代码,包括节点定义、树创建、线索化函数和遍历方法。线索二叉树避免了递归遍历的开销,特别适用于大规模数据的处理,实现了线性时间复杂度的非递归遍历。理解线索化原理后,可显著提升二叉树操作效率。

2025-08-07 01:07:01 539

原创 数据结构---二叉树的遍历实现

本文介绍了二叉树的两种遍历方式(深度遍历和广度遍历)及其代码实现。内容涵盖二叉树的结构定义、创建操作、节点插入方法,重点讲解了深度遍历的三种递归实现(前序、中序、后序遍历),并通过示例树演示了遍历过程。文章强调递归思想在深度遍历中的应用,建议结合树形结构图理解遍历顺序,同时指出广度遍历将使用任务队列方法实现(未展开)。代码示例完整展示了从树构建到遍历输出的全过程,包括节点访问函数和测试用例。

2025-07-07 10:22:15 1184

原创 数据结构---二叉树的遍历前述

本文介绍了二叉树遍历的前置思想,主要包含两种遍历方式:深度优先遍历和广度优先遍历。深度遍历采用类似走迷宫的递归思想,分为前序、中序和后序三种方式;广度遍历则通过层次遍历和队列结构实现逐层访问。文章还说明了递归思想在遍历中的应用,并提供了理论基础的示例分析,为后续代码实现奠定基础。理解这些遍历思想对掌握二叉树操作至关重要。

2025-07-04 19:28:13 1747

原创 数据结构---树和二叉树的介绍

本文介绍了树结构的基本概念、存储方式及二叉树特性。首先阐述了树结构的非线性特点及术语定义(如节点、根节点、父子节点等),比较了双亲表示法、孩子表示法等四种存储结构的优缺点。重点讲解了二叉树的定义、分类(满二叉树和完全二叉树)及其五个重要性质。最后指出顺序存储适用于完全二叉树,而链式存储更适用于一般情况。文章强调二叉树是应用最广泛的树结构,为后续学习各类具体树实现奠定理论基础。对存储结构仅需了解,核心应掌握二叉树的相关概念与性质。

2025-07-03 21:13:12 999 1

原创 数据结构---顺序/链式队列的实现

本文介绍了队列的两种实现方式:顺序队列(循环队列)和链式队列。顺序队列通过取模运算实现循环结构,解决空间浪费问题;链式队列则利用链表动态管理空间。两种队列都遵循"先入先出"原则,核心操作包括入队、出队和初始化。顺序队列需特殊处理队满/空判断,链式队列可动态调整空间。文章详细讲解了两种队列的结构定义、基本操作及实现细节,帮助读者深入理解队列的原理与应用。

2025-06-25 11:46:16 1901

原创 数据结构---顺序栈/链式栈的实现

摘要:本文详细介绍了栈的两种实现方式——顺序栈和链式栈。顺序栈采用数组实现,重点讲解了递增空栈的初始化、入栈、出栈操作及栈空/满判断。链式栈基于单向链表实现,通过头插法模拟入栈操作。文章对比了四种栈实现方式(递增/递减、空栈/满栈)的差异,并强调栈"先入后出"的核心特性。代码示例完整,包含结构定义、基本操作实现和内存管理,有助于读者深入理解线性数据结构的基本原理和应用场景。

2025-06-20 11:20:36 828

原创 数据结构---双向循环链表的实现

本文介绍了双向循环链表的数据结构及其实现。相比单向链表,双向链表通过在每个节点存储前驱和后继指针,解决了单向链表遍历后无法回溯的问题,便于数据管理。文章通过插入节点图示讲解了双向链表的操作原理,并提供了C语言实现代码,包括节点定义、初始化、插入删除、头插尾插、显示链表等功能模块。双向循环链表因其操作简单高效而成为常用数据结构之一,掌握其实现有助于深入理解链表结构和指针操作。本文内容简洁但涵盖了双向循环链表的核心要点,适合初学者系统学习链表相关知识。

2025-06-14 17:40:42 1029

原创 数据结构---带头节点链表和单向循环链表的实现

本次介绍的内容为带头指针的单向链表和单向循环链表两种链表结构。其中带头指针的单向链表相较于带头指针的单向链表最大的区别在于去掉了头节点,只告诉你一个指向第一个节点地址的指针,对于这种链表,引入一个dummy(adj 假的)节点作为头节点可以将有头节点链表的操作思想移植过来用即可,完成删、插操作;而提到循环链表,其本质就是在头部额外存储一个指针指向最后一个节点的地址,而最后一个节点的指针指向头。以下就是这两种链表的具体代码实现。//1. 定义链表的节点结构} node_t;

2025-06-13 19:50:42 918

原创 数据结构---单向链表的实现

本次介绍内容主要为数据结构中单向链表的实现。与前文的顺序表相比,链表就是在无法保证拥有连续空间的条件下,在离散的空间中将数据通过指针来链接起来,一个离散的空间叫做节点,在这个叫节点的空间中除去存储所需数据外额外用一部分存储下一个节点的地址信息(把节点形象认为成一个背着装着数据的包,手里握着下个人位置地图的人即可)。所谓链表就是通过这种方式在不连续空间中把存储数据联系起来,形成表结构。本次内容包括顺序表与链表的区别和单向链表的代码实现。//1. 定义链表的节点结构} node_t;

2025-06-09 17:14:34 1007 1

原创 数据结构---顺序表的实现

本文介绍了用C语言实现的顺序表数据结构,包括创建表头、扩容、插入/删除元素、查找、展示和释放等操作。顺序表是一种类似于可扩容数组的结构,通过动态内存分配实现存储空间的灵活调整。文章详细讲解了每个功能的实现逻辑,如使用malloc分配内存、扩容时采用2倍策略、利用memcpy高效拷贝数据等。作为数据结构的基础内容,顺序表的实现有助于理解更复杂数据结构的底层原理。作者作为初学者,希望通过分享代码帮助他人学习,并欢迎读者提出改进建议。

2025-05-31 11:17:29 2100 3

空空如也

空空如也

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

TA关注的人

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