数据结构
文章平均质量分 77
西西弟
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉排序树及二叉平衡树(数据结构)
摘要:本文系统介绍了二叉排序树(BST)和平衡二叉排序树(AVL)的概念、性质及实现。详细讲解了BST的有序性特点、基本操作(插入、查找、删除)的递归和非递归实现方法。针对AVL树,重点阐述了平衡调整的四种情况(LL、RR、LR、RL)及其旋转操作,并提供了完整的C++代码实现。文章通过示例数据演示了两种树的操作过程,旨在帮助读者深入理解这两种重要的数据结构及其应用。原创 2025-12-15 18:42:06 · 581 阅读 · 0 评论 -
二叉树(数据结构)
本文介绍了二叉树的基本概念、存储方式和遍历方法。主要内容包括:1)二叉树的五种类型(满二叉树、完全二叉树、完美二叉树、退化二叉树和平衡二叉树)及其性质;2)两种存储方式(顺序存储和链式存储)的C++实现代码;3)四种遍历方式(前序、中序、后序和层次遍历)的递归与非递归实现;4)线索化二叉树的原理和中序遍历线索化的实现。文章通过详细代码示例展示了二叉树的各种操作,为数据结构学习提供了实用参考。原创 2025-12-11 21:03:26 · 475 阅读 · 0 评论 -
哈夫曼树及哈夫曼编码实现(数据结构)
摘要:哈夫曼树是一种带权路径长度最短的二叉树,用于数据压缩编码。其构造方法包括:将叶节点按权值排序,每次合并权值最小的两个节点,直到形成完整树。哈夫曼树具有WPL唯一、只有度为0或2的节点等特点。哈夫曼编码通过遍历树生成,左子树为0,右子树为1。文中提供了C++实现代码,包括构建哈夫曼树和生成编码的过程,最终输出各字符对应的哈夫曼编码。原创 2025-12-01 13:36:14 · 386 阅读 · 0 评论 -
图的概念及存储方式(数据结构)
图是由顶点和边组成的非线性数据结构,可分为无向图和有向图。无向图的边无方向,有向图的边(弧)有方向。图的相关概念包括简单图、完全图、权值、子图等。存储方式主要有邻接矩阵(二维数组)、邻接表(顶点表+邻接边表)、边集数组(存储所有边信息)等。对于有向图还可使用十字链表,无向图可用邻接多重表。不同存储方式在空间和时间复杂度上各有优劣,邻接矩阵适合稠密图(O(n²)),邻接表适合稀疏图(O(n+m))。原创 2025-12-01 13:34:44 · 849 阅读 · 0 评论 -
并查集(数据结构)
并查集是一种处理不相交集合合并与查询的高效数据结构,支持合并(Union)和查找(Find)两种基本操作。初始实现采用树形结构,每个元素指向父节点,查找时需要遍历路径。该实现存在最坏时间复杂度O(n^2)的问题。优化方法包括:1)路径压缩-查找时让路径节点直接指向根节点;2)按秩合并-将较小树合并到较大树下。同时使用这两种优化可使时间复杂度降至接近线性。优化后的并查集广泛应用于连通性问题求解,如网络连接、图论算法等场景。原创 2025-11-20 16:26:09 · 364 阅读 · 0 评论 -
树(数据结构)
树是由n(n≥0)个节点组成的有限集合,包含根节点和叶节点。树的基本概念包括节点的度、层次关系(双亲、兄弟、祖先)以及树的存储结构(双亲表示法、孩子表示法、孩子兄弟表示法)。双亲表示法通过数组存储节点和父节点下标,查找父节点高效但子节点操作复杂;孩子表示法结合数组和链表,便于遍历子节点但查找父节点较慢;孩子兄弟表示法使用二叉链表结构,能高效转换多叉树为二叉树但不便查找父节点。文中提供了三种存储结构的C++实现代码示例。原创 2025-10-15 16:05:11 · 584 阅读 · 0 评论 -
队列(数据结构)
队列是一种遵循"先进先出"(FIFO)原则的线性数据结构,主要操作在队首和队尾进行。队列有两种实现方式:数组实现的循环队列和链表实现的链式队列。循环队列通过取模运算解决假溢出问题,使用队首和队尾指针进行操作,并预留一个存储空间区分空和满状态。链式队列则采用带头结点的单链表结构,通过队首和队尾指针实现入队和出队操作。两种实现方式都包含判空、判满、获取队首元素等基本操作,但循环队列大小固定而链式队列可动态调整。原创 2025-10-11 20:25:28 · 440 阅读 · 0 评论 -
栈(数据结构)
本文介绍了栈(Stack)这一遵循LIFO原则的线性数据结构,重点对比了顺序栈和链栈的实现方式。顺序栈基于数组实现,具有连续存储、操作速度快的特点,但需要提前分配容量;链栈基于链表实现,内存利用率高且无需预分配空间。文章详细给出了两种栈的C++代码实现,包括初始化、入栈、出栈、判空、获取栈顶元素等基本操作,并提供了完整的测试用例。两种实现方式各有优缺点:顺序栈操作效率高但可能浪费内存,链栈内存利用率高但操作相对复杂。原创 2025-10-02 18:23:33 · 264 阅读 · 0 评论 -
线性表(数据结构)
本文介绍了线性表的两种基本实现:顺序表和链表。顺序表采用连续内存存储,支持随机访问但插入删除效率低;链表通过节点指针连接实现动态存储,插入删除高效但需遍历访问。两种结构均实现了初始化、插入(头/尾/指定位置)、删除、打印等基本操作。顺序表使用数组存储,需处理内存分配;链表采用节点动态分配,需注意指针管理。文中提供了C++实现代码并演示了操作示例,展示了两种数据结构的特点及适用场景。原创 2025-09-17 22:41:53 · 264 阅读 · 0 评论
分享