
Java数据结构
Java数据结构
Sampson_S
这个作者很懒,什么都没留下…
展开
-
【Java高级数据结构】B+树
B+树B+树是B树的一个升级版,相对于B树来说,B+树更充分的利用了结点的空间,让查询速度更加稳定,其速度完全接近于二分法查找。B+树的特征1、B+树与B树的不同点:B+树的非叶子结点不保存关键字记录的指针,只进行数据索引,这样使得B+树的每个非叶子结点所能保存的关键字大大增加。2、B+树的叶子结点保存了父结点的所有关键字记录的指针,所有数据地址必须要到叶子结点上才能获取到。所以每次数据...原创 2020-04-27 15:44:00 · 416 阅读 · 0 评论 -
【Java高级数据结构】B树
B树又称B-树,一棵M阶的B树是一颗M路搜索树,它或者是一棵空树,或者是满足下列性质的树:1、根结点子女数(子树的个数)为[2, M];2、除根结点和叶子结点以外的所有分支结点至少有[(M/2), M]个子女(子树);3、所有的叶结点都位于同一层。M阶B树的结点结构如下:n, S0, (K1, S1), (K2, S2), ..., (Kn, Sn)其中,Si 是指向子树的指针,...原创 2020-04-20 16:41:05 · 872 阅读 · 0 评论 -
【Java高级数据结构】红黑树
红黑树红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是复杂的,但它的最坏情况的运行时间也是非常良好的,并且在实践中是高效的:它可以在 O(logn) 时间内做查找,插入和删除,这里的 n 是数中元素的数目。...原创 2020-04-12 20:25:20 · 941 阅读 · 0 评论 -
【Java高级数据结构】AVL树
AVL树一棵AVL树或者是空树,或者是具有下列性质的二叉搜索树:它的左子树和右子树都是AVL树,且左子树和右子树的高度之差的绝对值不超过1。结点的平衡因子 balance(balance factor)每个结点附加一个数字,给出该结点右子树的高度减去左子树的高度所得的高度差。这个数字即为结点的平衡因子 balance。根据AVL树的定义,任一结点的平衡因子只能取 -1、0、1。...原创 2020-04-12 18:30:50 · 624 阅读 · 0 评论 -
【Java高级数据结构】二叉搜索树
二叉搜索树又称BST树、二叉排序树。二叉搜索树或者是一颗空树,或者是具有下列性质的二叉树:1、每一个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。2、左子树(如果存在)上所有节点的关键码都小于根节点的关键码。3、右子树(如果存在)上所有节点的关键码都大于根节点的关键码。4、左子树和右子树也是二叉搜索树总结:如果对一颗二叉搜索树进行中序遍历,可以按从小到大的...原创 2020-04-09 15:28:35 · 311 阅读 · 0 评论 -
【Java高级数据结构】二叉树的遍历及相关操作
二叉树的遍历所谓树的遍历,就是按某种次序访问树中的结点,要求每个结点访问一次且仅访问一次。根据二叉树的结点结构,二叉树的基本结构是由根结点、左子树和右子树三个基本单元组成的,因此只要依次遍历这三部分,就遍历了整个二叉树。如果用 L、D、R 分别表示遍历左子树、访问根结点、遍历右子树,那么对二叉树的遍历顺序就可以有六种方式:1、访问根结点、遍历左子树、遍历右子树,记作 DLR。2、访问...原创 2020-04-09 13:19:25 · 334 阅读 · 0 评论 -
【Java高级数据结构】树与二叉树
树树和图都是非线性结构。线性结构中结点间具有唯一前驱、唯一后继关系,而非线性结构中节点间前驱、后继的关系并不具有唯一性。其中,在树结构中,节点间关系是前驱唯一而后继不唯一,即结点之间是一对多的关系;而在图结构中,结点间前驱与后继可不唯一,即结点之间是多对多的关系。直观地看,树结构是指具有分支关系地结构(其分叉、分层的特征类似于自然界中的树)。树结构应用非常广泛,特别是在大量数据处理(如在文件系统...原创 2020-04-08 17:11:41 · 423 阅读 · 0 评论 -
【Java基础数据结构】栈与队列的相关练习
栈与队列的相关练习判断一个序列是否是正确的出栈序列实现思路1、将入栈序列各元素依次入栈2、判断栈顶元素是否等于出栈序列元素相等 -》 进行出栈,更新outOrder不相等 -》 继续将入栈序列中元素进行入栈操作3、若栈内元素元素为空,则出栈序列正确,否则出栈序列错误代码实现public static <T extends Comparable<T>...原创 2020-03-19 17:04:40 · 194 阅读 · 0 评论 -
【Java基础数据结构】链表相关练习
单链表相关练习判断链表中是否存在环,并返回环的入口public Entry<T> isLoopAndGetEntry(){ if(isEmpty() || size == 1){ return null; } Entry<T> fast = headEntry, slow = headEntry;//快慢引用 -> 两者...原创 2020-03-19 16:21:30 · 169 阅读 · 0 评论 -
【Java项目实践】四则运算项目实现
四则运算项目实现项目介绍最开始的计算器只能进行两个数之间的运算,而不能进行复杂的如“9+((3*2)+(3-1))/2” 这样的四则运算。后来一名波兰的逻辑学家发明了后缀表达式(或称为逆波兰表达式),非常巧妙地解决了程序实现四则运算的难题。后缀表达式是一种把所有运算符都放在运算数字后面出现的式子,所以被称为后缀表达式,这样就解决了运算优先级和括号的问题。而中缀表达式就是我们平常用的标准四...原创 2020-03-19 16:53:30 · 631 阅读 · 0 评论 -
【Java基础数据结构】优先级队列
优先级队列如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了。这样,我们就引入了优先级队列 这种数据结构。 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有查找、插入一个新元素、删除。一般情况下,查找操作用来搜索优先权最大的元...原创 2020-04-03 13:43:01 · 359 阅读 · 0 评论 -
【Java基础数据结构】队列
队列队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。假设队列是q = (a1,a2,…,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,列在最后,这也比较符合我们通常生活中的习惯,排在第一...原创 2020-02-29 15:40:06 · 410 阅读 · 0 评论 -
【Java基础数据结构】栈
栈栈(stack)是限定仅在表位进行插入和删除操作的线性表。我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。例如:入栈:1,2,3,4,5;出栈:5,4,3,2,1;理解栈的定义需要注意:首先它是一个线性表,也就是说,栈元素具有线性关系,即前...原创 2020-02-29 15:10:08 · 216 阅读 · 0 评论 -
【Java基础数据结构】循环链表
循环链表循环链表是一个首尾相接的链表。将单链表最后一个结点的指针域由 null 改为指向表头结点,就得到了单链形式的循环链表,并称为循环单链表。同样还可以有多重链的循环链表。代码实现单向循环链表public class SingleCircleLink<T extends Comparable<T>> implements Link<T> { p...原创 2020-04-03 13:42:47 · 562 阅读 · 0 评论 -
【Java基础数据结构】顺序表和链表
顺序表和链表对于顺序表和链表而言,两者都属于线性表,只不过是线性表的不同存储结构。在这里使用Java对顺序表和链表进行实现顺序表线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。线性表(a1,a2,…,an)的顺序存储示意图如下:线性表的顺序存储结构,说白了,就是在内存中找了块地儿,通过占位的形式,把一定内存空间给占了,然后把相同数据类型的数据元素依次存放...原创 2020-02-29 14:19:43 · 259 阅读 · 0 评论 -
【Java基础数据结构】线性表
线性表线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。在稍复杂的线性表中,一个数据元素可由多个数据项(item)组成,此种情况下常把数据元素称为记录(record),含有大量记录的线性表又称文件(file)。线性表中的个数n定义为线性表的长度,n=0时称为空表。在非空表中每个数据...原创 2020-04-03 13:42:02 · 274 阅读 · 0 评论