数据结构
文章平均质量分 77
sanfendi
这个作者很懒,什么都没留下…
展开
-
数据结构之队列的java实现
队列在计算机术语中使用queue,和list(排)其实是一个意思。队列也是一种数据结构,类似于栈,只是与栈相反,在队列中最先插入的数据也最先被移除,即先进先出(FIFO,First In First Out)。队列可以理解成排队,比如,食堂窗口排的队,越在前面的,越早得到服务而先离开。在银行大厅的排号的机器也许就用了队列这个数据结构。在打印的时候,有“添加到队列”的选项,队列应用是很广泛的。 队原创 2014-03-05 09:06:47 · 2355 阅读 · 0 评论 -
汉诺塔问题的递归实现
汉诺塔是根据一个传说形成的一个问题: 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。 package cn.zhf.test; public class HanoiTower原创 2014-03-10 10:32:32 · 2170 阅读 · 0 评论 -
数据结构之图的Java实现
图G由两个集合V和E组成,记为:G=(V,E),其中:V是顶点的有穷非空集合,E是V中顶点偶对(称为边)的有穷集。通常,也将图G的顶点集和边集分别记为V(G)和E(G)。E(G)可以是空集。若E(G)为空,则图G只有顶点而没有边。图有两种存储结构:邻接矩阵和邻接表。邻接矩阵:用邻接矩阵表示顶点间的相邻关系, 用一个顺序表来存储顶点信息。邻接表:类似于树的孩子链表表示法。对于图G中的每个顶点vi,该原创 2014-03-10 09:59:30 · 5929 阅读 · 0 评论 -
数据结构之哈希表的java实现
哈希表是一种数据结构,提供快速的插入和查找功能。哈希表基于数组存储数据,因此能在O(1)时间内定位数据。关键字值通过哈希函数映射为数组下标。缺点就是数组创建后容量固定,如果数据较多需要不断扩展其长度。 如何将关键字转换为数组下标?这个操作是通过哈希函数完成的。比如,下面就是一个简单的哈希函数, int hash(int key){ return key % array.length;//通过原创 2014-03-06 08:46:12 · 5657 阅读 · 0 评论 -
数据结构之优先级队列、堆及堆排序
优先级队列是一个抽象数据类型,它提供删除插入、最大(最小)关键字值数据项的方法,其主要目的是对极值提供便利的访问。 优先级队列可以用有序数组来实现,也可以用队列来实现。 堆,是一种树,由其实现优先级队列的插入删除操作的时间复杂度都是O(logN)。 堆是有如下特点的二叉树: 1.是完全二叉树。即,除了树的最后一层节点不是满的,其他的每一层都必须是满的。 2.堆中的每一个节点都满足堆的原创 2014-03-06 08:48:19 · 2520 阅读 · 0 评论 -
数据结构之链表的Java实现
链表:一种离散存储数据的方式,每一个数据块包含一个数据和对下一个数据的引用,首结点无前驱,末结点无后继。链表不按顺序存储,所以插入和删除操作效率很高(O(1)),仅需要改变一两个引用值,不需要移动和复制数据,但是查找效率很低,因为要遍历整个链表。链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。使用链表存储数据的另一个优点就是需要多少内存就有多少,而数组的大小在创建时就原创 2014-03-05 09:47:49 · 1864 阅读 · 0 评论 -
数据结构之栈的java实现
栈:一种仅允许在一端进行插入和删除操作的线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来),允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表(LIFO,原创 2014-03-05 09:01:01 · 1534 阅读 · 0 评论 -
数据结构之双向链表的Java实现
单链表只能从前往后遍历,如果链表的长度较大,遍历到链表后半部分的时候想要往前查找,就只能回到开头,重新遍历了。 双向链表提供了这个能力,即允许前向遍历,也允许后向遍历整个链表。原因是双向链表的每个节点都有两个指向其他节点的引用。但这也是其缺点,因为在插入、删除的时候需要处理四个链接点的引用, 占用的空间也大了一些。如将头节点和尾节点链接起来,即成为双向循环链表。 下面是java代码:原创 2014-03-05 10:21:16 · 2143 阅读 · 0 评论 -
数据结构之二叉树的Java实现
树由边连接的节点构成。节点一般代表实体数据,如代表某一类数据。windows文件系统就可以看成是一棵树,比如C盘下有一些文件夹,这些文件夹下面又分别有一些文件夹,这样的关系其实就是一棵树。 根:树顶端的节点称为树的根,一棵树只有一个根。 父节点:每一个节点(除了根)都有一条边向上连接到另一个节点,上面的这个节点就称为下面节点的父节点。 子节点:与父节点相反。 子树:每个节点都可以作为子树的原创 2014-03-05 10:23:06 · 2019 阅读 · 0 评论 -
java 中的Map存取对象
先创建一个类,其中有文本和计数两个属性。 package cn.zhf.test; public class Word { private String text; private int count; /** * @return text */ public String getText() { return text; } /** * @param text セ原创 2013-11-22 19:44:24 · 3881 阅读 · 0 评论 -
哈夫曼编码
package cn.zhf.test; import java.util.Comparator; import java.util.NoSuchElementException; public class HuffmanTree { final int SIZE = 256; public static void main(String[] args) {原创 2014-03-10 10:04:17 · 1608 阅读 · 0 评论