摘要: 伸展树的知识点总结以及实现 阅读全文
posted @ 2018-06-10 10:13 林学徒 阅读(795) 评论(2) 推荐(0) 编辑
摘要:   单词查找树,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。Trie可以看作是一个确定有限状态自动机(DFA)。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节 阅读全文
posted @ 2018-06-07 13:17 林学徒 阅读(986) 评论(0) 推荐(0) 编辑
摘要:   跳表(SkipList)是一种随机化的数据结构,目前在redis和leveldb中都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表, 就能轻松实现一个 SkipList。 考虑一个有序表: 从该有序表中搜索元素 ,需要比较的次数 阅读全文
posted @ 2018-06-06 22:34 林学徒 阅读(280) 评论(0) 推荐(0) 编辑
摘要:   红黑树由AVL树改进而来,红黑树与AVL都是平衡结构的树。对于AVL树,其每次插入操作都需要从根节点处开始判断该树是否失去平衡,从而做出相应的调整。且其调整过程较为麻烦,每次都需要判断其左右两棵子AVL树的深度情况。相对于红黑树,其将关注点从AVL树的左右两棵子树的深度的失衡 阅读全文
posted @ 2018-06-05 08:47 林学徒 阅读(350) 评论(0) 推荐(0) 编辑
摘要:   常用的图的存储结构主要有两种,一种是采用数组链表(邻接表)的方式,一种是采用邻接矩阵的方式。当然,图也可以采用十字链表或者边集数组的方式来进行表示,但由于不常用,为此,本博文不对其进行介绍。 邻接矩阵   邻接矩阵采用一个n n的二维数组来进行表示(假设该 阅读全文
posted @ 2018-06-04 10:50 林学徒 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 问题:如何得到链表中的倒数第k个元素?   一种简单的思路是遍历链表一遍,并统计出链表中节点的数目,然后计算出倒数第k个元素到链表头节点的元素的距离,然后得到对应的结果。但是,我们能否有一种更加简便的方式来得到倒数的第k个元素的结果呢?答案肯定有啦,不然我也不会总结成博文了... 阅读全文
posted @ 2018-06-02 15:31 林学徒 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 问题:如何得到一个链表的中间元素?   相信,这个问题对于刚入门编程的人来说,都不会难,最自然而然的想法是先遍历一遍链表,统计链表中的元素的个数,之后,再走一遍链表,所走的步长为链表长度的一半。这样就能获得链表的中间元素的值。但是,我们能不能有一种方法是只走一遍链表便得到结果的呢 阅读全文
posted @ 2018-06-02 14:32 林学徒 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 问题:如何判断一个单向链表中是否存在环? 例如: 解题思路:   从一个实际的生活场景出发,两个人,在一个环形的操场上跑步的时候,如果有一个人跑得比另一个人还要快,那么,在n圈之后,这两个人总会在操场上的某个点相遇。将操场类比于链表中存在的环路径,将两个人看成两个指针,那么这道题 阅读全文
posted @ 2018-06-02 14:01 林学徒 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 本博文主要用于讲解Hash的应用场景 Hash主要应用于数据结构中和密码学中。 用于数据结构时,主要是为了提高查询的效率,这就对速度比较重视,对抗碰撞不太看中,只要保证hash均匀分布就可以。 在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。 阅读全文
posted @ 2018-05-30 09:17 林学徒 阅读(560) 评论(0) 推荐(1) 编辑
摘要: 博文回答一下两个问题: 1. 接口和抽象类的区别 2. 选用接口和抽象类的依据 对于问题1: 1. 从java语法的角度上来说,接口的所有成员和方法都是public的,且其方法均为abstract的。直到jdk1.8之后,接口中的方法才能进行默认的实现。而对于抽象类,其可以有私有的实现,且其可以没有 阅读全文
posted @ 2018-05-29 19:51 林学徒 阅读(318) 评论(0) 推荐(0) 编辑