数据结构
文章平均质量分 56
heqianqiann
每一个不曾起舞的日子都是对生命的辜负
展开
-
数据结构 跳表SkipList的原理和代码实现
跳表简介跳表是平衡树的一种替代的数据结构,但是和红黑树不相同的是,跳表对于树的平衡的实现是基于一种随机化的算法的,这样也就是说跳表的插入和删除的工作是比较简单的。我们知道,普通单链表查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办原创 2017-06-01 12:17:30 · 1105 阅读 · 0 评论 -
数据结构 哈希表的原理和代码实现
哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的当关键字集合很大时,关键字值不同的元素可原创 2017-06-11 20:18:36 · 5056 阅读 · 1 评论 -
数据结构 线性表以及Java代码实现
1. 线性表线性表是最基本、最简单、也是最常用的一种数据结构。在线性表中数据元素之间的关系是线性,数据元素可以看成是排列在一条线上或一个环上。 线性表分为静态线性表和动态线性表,常见的有顺序表(静态的)、单向链表(动态的)和双向链表(动态的)。2. 顺序表/** * List * 线性表接口 * (1)计算表的长度n。 * (2)线性表是否为空 * (3)将元素添加到线性表的末尾 *原创 2017-07-14 23:34:58 · 1080 阅读 · 0 评论 -
数据结构 队列以及Java代码实现
1. 队列队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队尾(rear)——允许插入的一端 队头(front)——允许删除的一端 队列特点:先进先出(FIFO)结构模型:2.顺序循环队列/** * Queue * 队列的基本操作 * (1)清空队列原创 2017-07-14 23:39:34 · 768 阅读 · 0 评论 -
数据结构 栈以及Java代码实现
1. 栈栈是一种特殊的线性表,是操作受限的线性表 栈的定义和特点 定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈 特点:先进后出(FILO)或后进先出(LIFO) 2. 顺序栈/** * Stack * 栈 * Created by heqianqian on 2017/7/14. */ public interface Stack<T> {原创 2017-07-14 23:42:39 · 560 阅读 · 0 评论