![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
这个名字真难起
无。。。
展开
-
Java数据结构之图与深度优先搜索、广度优先搜索
图基本介绍为什么要有图:前面我们学了线性表和树线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱也就是父节点当我们需要表示多对多的关系时, 这里我们就用到了图图的举例说明:图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。 结点也可以称为顶点。如图:图的常用概念顶点(vertex)边(edge)路径无向图:...原创 2020-05-07 13:01:56 · 223 阅读 · 0 评论 -
Java数据结构之多叉树与B树基本介绍
二叉树的问题分析二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿), 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响。问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度。多叉树在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更...原创 2020-05-04 21:37:31 · 312 阅读 · 0 评论 -
Java数据结构之二叉排序树与平衡二叉树
二叉排序树二叉排序树介绍:二叉排序树:BST(Binary Sort(Search) Tree),对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明: 如果有相同的值,可以将该节点放在左子节点或右子节点。比如对数据 (7, 3, 10, 12, 5, 1, 9) ,对应的二叉排序树为:如果再插入一个数据2后,二叉排序树应变为:...原创 2020-05-03 23:51:21 · 233 阅读 · 0 评论 -
Java数据结构之赫夫曼树与赫夫曼编码
赫夫曼树基本介绍:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。赫夫曼树几个重要概念和举例说明:路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分...原创 2020-05-03 12:33:15 · 230 阅读 · 0 评论 -
Java数据结构之树结构与堆排序
二叉树为什么需要树这种数据结构:数组存储方式的分析:优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可,删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索...原创 2020-04-28 21:32:53 · 236 阅读 · 0 评论 -
Java数据结构之简单的哈希表实现
哈希表哈希表的基本介绍:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址…),当输入该员工的id...原创 2020-04-25 21:21:21 · 173 阅读 · 0 评论 -
Java数据结构之栈与计算器
栈的一个实际需求请输入一个表达式计算式:[722-5+1-5+3-3] 点击计算【如下图】请问: 计算机底层是如何运算得到结果的? 注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题-> 栈。栈的介绍栈的英文为(stack) 栈是一个先入后出(FILO-Fi...原创 2020-04-20 21:58:39 · 462 阅读 · 1 评论 -
Java数据结构之单向环形链表解决约瑟夫问题
单向环形链表最后一个节点的next指向第一个节点,形成一个环形(可以有头结点,也可以无头结点)约瑟夫问题Josephu(约瑟夫、约瑟夫环) 问题:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。举例:...原创 2020-04-19 19:15:40 · 133 阅读 · 0 评论 -
Java数据结构之双向链表
使用双向链表实现 –水浒英雄排行榜单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。单向链表不能自我删除,需要靠辅助节点 ,而双向链表,则可以自我删除。分析:直接从链表尾部插入节点:package linkedlist;public class DoubleLinkedListDemo { public static void main(String[...原创 2020-04-19 17:45:05 · 107 阅读 · 0 评论 -
Java数据结构之单向链表
链表介绍链表是有序的列表,但是它在内存中是存储如下:1、链表是以节点的方式来存储,是链式存储2、每个节点包含 data 域, next 域:指向下一个节点.3、如图:发现链表的各个节点不一定是连续存储.4、链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图如下:单链表的应用举例:使用带head头的单向链表实现 –水浒英雄排行榜管理...原创 2020-04-19 12:40:03 · 102 阅读 · 0 评论 -
Java数据结构之队列
队列介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出;后存入的要后取出。数组模拟队列队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如上图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随...原创 2020-04-17 00:27:44 · 98 阅读 · 0 评论 -
Java数据结构之稀疏数组
基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值。把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。应用举例图解稀疏数组:稀疏数组代码举例public class SparseArray { public static void main(...原创 2020-04-16 20:55:36 · 80 阅读 · 0 评论