数据结构
凌晨两点半的太阳v
这个作者很懒,什么都没留下…
展开
-
Java哈夫曼二叉树之数据压缩,解压
压缩原理:将原文件的字符转成字节数据 解压原理:将原文件压缩过程中的编码表,写入压缩文件中。解压过程中,先读取编码表,再读取压缩的字符的字节数据,根据编码表还原字符数据,生成新的文件。...原创 2018-09-05 15:24:13 · 500 阅读 · 0 评论 -
Java实现哈夫曼二叉树
1、统计学生学分 学生考试结果 A B C D 学分增加 5 4 3 0 人数 10 50 30 10代码1: if A : +5 else if B : +4 else if C : +3 ...原创 2018-08-31 15:10:00 · 244 阅读 · 1 评论 -
Java实现表达式二叉树
表达二叉树的特点:运算符作为父节点,运算的数字分别为左右子节点 第一步:遍历公式,找出所有的运算符和 数字,分别构建节点存储 第二步:从运算符列表中去除第一个运算符,取出两个运算的数字,构建一个节点,并且放回数字列表中 第三步:重复第二步,直到数字列表只剩一个节点,该节点就是根节点节点的属性:左右子节点,数据 节点类的代码:public class Node { pr...原创 2018-08-30 15:38:08 · 1081 阅读 · 0 评论 -
链表,Java自定义链表的实现(单向,循环,双向)
1.链表 链表是由节点组成的。 节点是由数据域+引用域组成的。 节点与节点之间是通过引用域进行链接的。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针...原创 2018-08-28 17:17:05 · 7862 阅读 · 1 评论 -
Java 队列 ArrayList。简单自定义队列
第一步:查看,剖析ArrayList源代码 第二步:简单自定义队列队列动态添加元素的机制:新建一个数组对象,再把原数组中的元素和新元素放入其中,再把新数组的地址变成原数组的地址。ArrayList的默认初始长度是10,当然也可以自定义;随着元素的增加,其长度也可能会增加,扩容的公式为: 新容量 = 旧容量/2 + 旧容量 + 1 即旧容量的1.5倍+1泛型:泛型是Java SE 1....原创 2018-08-26 17:28:38 · 2630 阅读 · 0 评论 -
JAVA数组和数组队列。
1.数组 数组是一个容器,可以存储同一类型的N个数据。 数组是一种数据结构,是数据结构中访问速度最快的一种。 数组是直接通过下标进行定位的。 数组是属于引用数据类型(数组名中存储的是内存首地址)。 数组本身只有length属性(length获取数组中能存储的数据个数) 但是有从Object父类继承的属性和方法。数组在内存中的存...原创 2018-08-26 13:29:08 · 1145 阅读 · 0 评论 -
JAVA压缩之LZW算法字典压缩与解压
压缩过程:前面已经写过一篇哈夫曼压缩,LZW字典压缩与哈夫曼压缩的不同之处在于不需要把编码写入文件,编码表是在读文件中生成的,首先将0-255个ASCLL码与对应的数字存入哈希表中,作为基础码表。这里的后缀为当前前缀+后缀 如果在码表中存在,前缀等于前缀+后缀。如果不存在,将前缀+后缀所表示的字符串写入编码表编码,同时将前缀写入压缩文件中。这里重点注意一下,一个字节所能表示的数字范围为0-...原创 2018-09-17 23:07:47 · 3824 阅读 · 3 评论 -
Java简单实现自定义HashMap
数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。要综合两者的特性,就有了哈希表。哈希表有多种不同的实现方法,最经典的一种方法 —— 拉链法。哈希表可以理解为链表的数组。主干为数组,数组的每一个成员是链表。该数据结构所容纳的所有元素均包含一个指针,用于元素间的链接。我们根据元素的自身特征把元素分配到不同的链表中去,反过来我们也正是通过这些特征找到正确的链表,再从...原创 2019-02-15 16:16:14 · 4612 阅读 · 2 评论