数据结构
文章平均质量分 90
九霄星河
这个作者很懒,什么都没留下…
展开
-
数据结构实现 1.2:数组栈(C++版)
数据结构实现(二):数组栈(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入栈操作2.2 出栈操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入栈操作3.2 出栈操作3.3 查找操作4. 完整代码1. 概念及基本框架栈 可以看做一种特殊的 数组 ,所以我使用第一节实现的 动态数组 来实现栈这种数据结构。当然,栈也可以通过其他方式来实现。因为该栈是通过动态数组实现的...原创 2018-11-09 11:05:35 · 797 阅读 · 0 评论 -
数据结构实现 6.1:二叉堆_基于动态数组实现(C++版)
数据结构实现 6.1:二叉堆_基于动态数组实现(C++版)1. 概念及基本框架1.1 满二叉树1.2 完全二叉树2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架二叉堆 是一种高级数据结构,这里我们通过 1.1 中的 动态数组 来实现。因为二分搜索树操作的...原创 2018-11-14 18:27:47 · 644 阅读 · 2 评论 -
数据结构实现 6.2:优先队列_基于最大二叉堆实现(C++版)
数据结构实现 6.2:优先队列_基于最大二叉堆实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架队列 是一种现实中很常见的数据结构,但有时候队列排序不仅仅依靠入队时间来决定,而是不同的元素有不同的优先级。显然,通过 6.1...原创 2018-11-14 19:37:10 · 517 阅读 · 2 评论 -
数据结构实现 6.3:优先队列_基于动态数组实现(C++版)
数据结构实现 6.3:优先队列_基于动态数组实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架6.2 中通过 最大二叉堆 实现了 优先队列 ,这一节我们通过动态数组来实现优先队列。优先队列 是 队列 的一种,所以有队列...原创 2018-11-24 15:45:31 · 598 阅读 · 0 评论 -
数据结构实现 6.4:优先队列_基于链表实现(C++版)
数据结构实现 6.4:优先队列_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架6.3 中通过 动态数组 实现了 优先队列 ,这一节我们通过链表来实现优先队列。优先队列 是 队列 的一种,所以有队列的基本特性...原创 2018-11-24 15:58:57 · 1345 阅读 · 0 评论 -
数据结构实现 8.1:字典树(C++版)
数据结构实现 8.1:字典树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...原创 2018-11-25 22:27:46 · 634 阅读 · 0 评论 -
数据结构实现 7.1:线段树(C++版)
数据结构实现 7.1:线段树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 构建操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 构建操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...原创 2018-11-24 21:26:42 · 1667 阅读 · 0 评论 -
数据结构实现 9.1:并查集_数组结构实现(C++版)
数据结构实现 9.1:并查集(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值……...原创 2018-11-26 10:40:58 · 654 阅读 · 0 评论 -
数据结构实现 9.2:并查集_树思想实现(C++版)
数据结构实现 9.2:并查集_树思想实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 联合操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 联合操作3.2 查找操作4. 完整代码1. 概念及基本框架9.1 我们利用数组的结构实现了并查集,这一节我们利用树的思想来实现并查集。(但本质上还是数组,只是逻辑上的树形结构)如上图,不同的颜色表示不同的集合,里面的字母表...原创 2018-11-26 11:16:02 · 497 阅读 · 0 评论 -
数据结构实现 10.1:AVL树(C++版)
数据结构实现 10.1:自平衡树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 查找操作2.3 其他操作3. 算法复杂度分析3.1 增加操作3.2 查找操作4. 完整代码1. 概念及基本框架线段树 是一种二分搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。如上图中,每个结点可以存一些这个区间内的元素的性质,比如:和、最大值、最小值...原创 2018-11-26 15:48:40 · 311 阅读 · 0 评论 -
数据结构实现 1.1:动态数组(C++版)
数据结构实现(一):动态数组(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架数组 是一种 线性结构 ,而且存储上属于 顺序存储(即内存的物理空间是连续的),也就是线性表中的 顺序表 。数组结构...原创 2018-11-08 16:33:29 · 2266 阅读 · 3 评论 -
数据结构实现 5.2:映射_基于链表实现(C++版)
数据结构实现 5.2:映射_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架.在 5.1 中我们通过 二分搜索树 来实现了映射,这一节我们通过 链表 来实现映射。映射 的基本...原创 2018-11-13 15:10:07 · 631 阅读 · 0 评论 -
数据结构实现 1.3:数组队列(C++版)
数据结构实现(三):数组队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架队列 可以看做一种特殊的 数组 ,所以我使用第一节实现的 动态数组 来实现队列这种数据结构。当然,队列也可以通过其他方式来实现。因为该队列是通过动态...原创 2018-11-09 13:34:56 · 1686 阅读 · 0 评论 -
数据结构实现 1.4:循环队列(C++版)
数据结构实现(四):循环队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架通过第三节我们知道,数组队列 在出队操作中需要花费 O(n) 的时间复杂度,原因在于出队时需要移动大量元素。如果我们可以循环利用空间,那么问题就迎刃...原创 2018-11-09 16:46:09 · 440 阅读 · 1 评论 -
数据结构实现 3.1:二分搜索树(C++版)
数据结构实现 3.1:二分搜索树(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 遍历操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架二分搜索树 是一种 半线性结构 ,而且存储上属于 链式存储(即内存的物理空间是不连续的),是树形结构的一种。二分搜索树结构如下图...原创 2018-11-12 23:14:51 · 765 阅读 · 0 评论 -
数据结构实现 2.1:链表(C++版)
数据结构实现(五):链表(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架链表 是一种 线性结构 ,而且存储上属于 链式存储(即内存的物理空间是不连续的),是线性表的一种。链表结构如下图所示:...原创 2018-11-10 11:01:31 · 445 阅读 · 0 评论 -
数据结构实现 2.2:链表栈(C++版)
数据结构实现(六):链表栈(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入栈操作2.2 出栈操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入栈操作3.2 出栈操作3.3 查找操作4. 完整代码1. 概念及基本框架通过第五节,我们知道链表虽然整体的操作时间复杂度是 O(n) 级别的,但是如果只对头结点进行操作,那么时间复杂度是 O(1) 级别的,这很类似于栈(单...原创 2018-11-10 13:58:27 · 714 阅读 · 0 评论 -
数据结构实现 2.3:链表队列(C++版)
数据结构实现(七):链表队列(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 入队操作2.2 出队操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 入队操作3.2 出队操作3.3 查找操作4. 完整代码1. 概念及基本框架在前面第三节中,我们通过 动态数组 实现了 队列 这种数据结构。当然,队列也可以通过 链表 来实现所谓的 链表队列 。链表队列的结构如上图所示,...原创 2018-11-10 20:52:05 · 249 阅读 · 0 评论 -
数据结构实现 4.1:集合_基于二分搜索树实现(C++版)
数据结构实现 4.1:集合_基于树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架集合 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)。这一节我们通过 二分搜索树 来实现集合...原创 2018-11-13 10:12:28 · 522 阅读 · 0 评论 -
数据结构实现 4.2:集合_基于链表实现(C++版)
数据结构实现 4.2:集合_基于链表实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 查找操作2.4 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 查找操作4. 完整代码1. 概念及基本框架在4.1 中我们通过 二分搜索树 实现了集合,这一节我们通过 链表 来实现集合。集合 的基本特性依然要满足:集合内的元素 不能重复 ...原创 2018-11-13 11:01:18 · 982 阅读 · 2 评论 -
数据结构实现 5.1:映射_基于二分搜索树实现(C++版)
数据结构实现 5.1:映射_基于树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架映射 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)。这一节...原创 2018-11-13 13:28:25 · 557 阅读 · 0 评论 -
数据结构实现 10.2:映射_基于AVL树实现(C++版)
数据结构实现 10.2:映射_基于AVL树实现(C++版)1. 概念及基本框架2. 基本操作程序实现2.1 增加操作2.2 删除操作2.3 修改操作2.4 查找操作2.5 其他操作3. 算法复杂度分析3.1 增加操作3.2 删除操作3.3 修改操作3.4 查找操作4. 完整代码1. 概念及基本框架映射 是一种高级数据结构,其实现方法也不唯一,但存储上使用 链式存储(即内存的物理空间是不连续的)...原创 2018-11-26 19:14:09 · 674 阅读 · 1 评论