![](https://img-blog.csdnimg.cn/c06990071ec5405eac1f8f8f647cbc69.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构从零开始
文章平均质量分 84
一起快乐地学习数据结构吧
小智RE0
慎独
展开
-
数据结构(一)---[数组]
目录数组数据结构作为一门基础学科;研究的是数据如何在计算机中进行组织和存储,使得我们可以高效的获取数据和修改数据.数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关.数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法.原创 2021-07-20 16:41:46 · 195 阅读 · 0 评论 -
数据结构(二) ---[栈(stack) ]
目录栈栈栈也是一种线性数据结构,只能从栈顶一段添加/取出元素;类似于单口试管;栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则.原创 2021-07-22 19:03:08 · 335 阅读 · 2 评论 -
数据结构 (三) ---[队列 (Queue)]
目录队列队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)只能从一端(队.原创 2021-07-26 17:42:33 · 133 阅读 · 0 评论 -
数据结构 (四) ---[链表 ][单链表的基本操作实现(Java)]
文章目录链表链表的具体实现链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应.原创 2021-08-08 23:27:45 · 157 阅读 · 0 评论 -
数据结构 (四) ---[链表 ](2) [使用链表实现栈 以及 队列 (Java代码实现)]
文章目录使用链表实现栈使用链表实现队列使用链表实现栈利用之前创建的单链表 ==> : MyLink作为存储容器;使用链表实现队列需要用到之前创建的队列基本操作实现接口 ==> MyQueue需要用到上次创建的链表作为底层存储==> MyLink创建MyLinkedQueue实现接口 MyQueue/** * @create 2021-08-09 * 使用链表实现队列; * 实现 队列基本操作实现的接口; */public class MyLinke.原创 2021-08-13 22:29:25 · 95 阅读 · 1 评论 -
数据结构 (四) --- [关于递归的理解,使用递归的方式删除链表的元素]
递归使用的方法在自己的方法体内调用自己,从本质上,就是把原来的问题转化为更小的同一问题。比如说,要执行方法A,但是方法A中又调用了方法B,方法B中调用了方法C,在递归的思想中,是方法直接或者间接调用自身.例如说计算1+2+3+4+5…+100的和;sum(1) = 1sum(2) = 2 + sum(1) = 3sum(3) = 3 + sum(2) = 6sum(4) = 4 + sum(3) = 10........sum(100)= 100 +sum(99)=?原创 2021-09-14 17:18:44 · 334 阅读 · 0 评论 -
数据结构 (五) --- [二分搜索树 (Java)]
???? 树是一种数据结构,它是由n(n≥1)个有限节点组成一个具有层次关系的集合.==>树(百度百科)二叉树也是动态数据结构,它是天然的递归结构;具有唯一的根节点;也就是顶层的节点,每个节点最多只有两个子节点,即左子树和右子树;而每个节点最多可以有一个父节点.每个节点的左子树,右子树也是二叉树结构满二叉树是指 除了位于最后一层的叶子节点没有子节点,其余节点都有两个子节点的树.(一个层数为k 的满二叉树总结点数为:2k-1)(第k层上的结点数为:2k-1)(一个层数为k的满二叉树原创 2021-10-01 20:10:42 · 152 阅读 · 0 评论 -
数据结构(六) ---[实现 堆(heap)(包含方法图解过程) 优先队列(Priority Queue)]
文章目录1.堆 ,满二叉树,完全二叉树(概论)满二叉树完全二叉树堆2. 具体实现 最大堆2.1初始化的几个方法;判断空堆;查询父节点索引,查询左/右结点索引的方法2.2 最大堆的添加节点方法方式1:添加时进行交换????图解用代码实现 堆中元素添加(方式1---交换式);以及输出堆的方法方式2:添加时进行覆盖????图解用代码实现 堆中元素添加(方式2 ---覆盖式);2.3 在最大堆取出优先级最高的节点 方法方式1:交换式????图解用代码实现 在最大堆中取出最高优先级的节点 (方式1--交换式)方式2:原创 2021-11-15 17:48:32 · 1253 阅读 · 1 评论 -
数据结构(七) ---[实现 线段树(SegmentTree) ]
文章目录1.线段树的概念2.实现线段树,包括查找元素和更新元素方法1.线段树的概念首先给你一个数组[1,2,3,4,5];让你把它做成一棵二分搜索树;做出来大概这样,它是个斜树;高度过高;那么,我要是分区间来构建这棵树呢;一个区间一个区间地分化这棵树;然后让区间的和作为树的结点;并且,注意到数组原来的值都分布在叶子结点上;左树和右树的高度差不超过1;可能觉得这个不明显,那用个偶数长度的数组来看看;一样的;原数组的元素分布在叶子结点上原创 2021-12-01 10:35:34 · 430 阅读 · 0 评论 -
数据结构(八) ---[实现字典树[前缀树](Trie)]
文章目录1.字典树添加单词添加方法改进2.判断是否存在指定单词,判断是否存在指定前缀的单词;3.判断是否存在指定单词(这时会将单词中的.号视为任意字母)Trie(前缀树或者字典树),主要针对于字符串的检索问题;值不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串;现在给你一本英语单词字典,要求快速查到单词zoo,你要是一个一个地往过找,是比较耗时的;而如果从单词的前缀开始找,先找到z,然后接着找zo,再接着找,就找到zoo原创 2021-12-02 08:27:13 · 309 阅读 · 0 评论 -
数据结构(九) ---[实现并查集(UnionFind)]
文章目录实现方式1:使用数组基础实现过程代码实现实现方式2:以数组为基础,树形结构实现过程代码实现实现方式3:(优化方式2),添加一个辅助数组存储每棵树的节点个数实现方式4:(优化方式3) 按秩合并实现方式5:路径压缩实现方式6: 优化可用并查集解决网络上的节点连接问题;具体说的话右两个功能;(1)判原创 2021-12-10 01:00:00 · 364 阅读 · 0 评论 -
数据结构(十) ---[实现平衡树(AVL Tree)]
写在前面实际上,之前已经更新过一篇关于平衡树的笔记了;—>笔记链接;学习数据结构笔记(12) — [平衡二叉搜索树(AVLTREE)]之前的实现方式需要计算出当前节点的父节点的索引;…左旋右旋实现方式步骤比较明确;不足之处是仅实现了添加节点时维持二分树的平衡;本次的平衡树具体操作方式和之前的那种略有不同;所以记录一下吧…这里的基础会以之前的二分搜索树实现作为基础,在基础上进行改动;笔记链接—>数据结构 (五) — [二分搜索树 (Java)]这里首先会在节点内定义属性h.原创 2021-12-20 00:30:00 · 564 阅读 · 0 评论 -
数据结构(十 一) ---[实现红黑树(Red Black Tree)]
红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。 红黑树是在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找原创 2021-12-22 17:06:28 · 546 阅读 · 0 评论