JS中数据结构之链表】的更多相关文章

1.链表的基本介绍 数组不总是组织数据的最佳数据结构,在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非常困难.在数组中,添加和删除元素也很麻烦,因为需要将数组中的其他元素向前或向后平移. 链表是由一组节点组成的集合.每个节点都使用一个对象的引用指向它的后继.许多链表的实现都在链表最前面有一个特殊节点,叫做头节点.如下图: 2.链表的实现 2.1.基于对象的链表的实现 Node 类用来表示节点,包含两个属性:element 用来保存节点上的数据,next 用来…
树是一种非线性的数据结构,以分层的方式存储数据.在二叉树上进行查找非常快,为二叉树添加或删除元素也非常快. 一棵树最上面的节点称为根节点,如果一个节点下面连接多个节点,那么该节点称为父节点,它下面的节点称为子节点.一个节点可以有 0 个.1 个或多个子节点,没有任何子节点的节点称为叶子节点. 二叉树是一种特殊的树,它的子节点个数不超过两个,一个父节点的两个子节点分别称为左节点和右节点.树中任何一层的节点可以都看做是子树的根,树的层数就是树的深度. 二叉查找树是一种特殊的二叉树,相对较小的值保存在…
集合(set)是一种包含不同元素的数据结构.集合中的元素称为成员.集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在.当你想要创建一个数据结构用来保存一些独一无二的元素时就可以用到集合. 基于数组的 Set 类的实现 function Set() { this.dataStore = []; this.add = add; this.remove = remove; this.size = size; this.union = union; //求并集 this.…
散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用.散列使用的数据 结构叫做散列表.在散列表上插入.删除和取用数据都非常快. 下面的散列表是基于数组进行设计的,数组的长度是预先设定的,如有需要,可以随时增加.所有元素根据和该元素对应的键,保存在数组的特定位置.使用散列表存储数据时,通过一个散列函数将键映射为一个数字,这个数字的范围是0到散列表的长度. 散列函数会将每个键值映射为一个唯一的数组索引.然而,键的数量是无限的,数组的长度是有限的,一个更现实的目标是让散列 函数尽量将键均匀地…
字典是一种以键 - 值对形式存储数据的数据结构 通过数组实现字典 function Dictionary() { this.add = add; this.datastore = new Array(); this.find = find; this.remove = remove; this.showAll = showAll; this.count = count; this.clear = clear; } add() 方法接受两个参数:键和值 function add(key, valu…
1.栈的基本介绍 栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现. 栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶.栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构.由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问.为了得到栈底的元 素,必须先拿掉上面的元素. 2.栈的实现 用数组 dataStore 保存栈内元素,构造函数将其初始化为一个空数组.变量 top 记录 栈顶位置,被构造函数初始化为…
列表是一组有序的数据.每个列表中的数据项称为元素.在 JavaScript 中,列表中的元素可以是任意数据类型.列表中可以保存多少元素并没有事先限定并可以不断壮大,实际使用时元素的数量受到程序内存的限制. (1)列表的抽象数据类型定义: listSize(属性) 列表的元素个数 pos(属性) 列表的当前位置 length(属性) 返回列表中元素的个数 clear(方法) 清空列表中的所有元素 toString(方法) 返回列表的字符串形式 getElement(方法) 返回当前位置的元素 in…
图由边的集合及顶点的集合组成.边是有方向的是有序图(有向图),否则就是无序图(无向图).图中的一系列顶点构成路径,路径中所有的顶点都由边连接.路径的长度用路径中第一个顶点到最后一个顶点之间边的数量表示. 用邻接表来表示边,即将与某一顶点的相邻的边表示为由该顶点的相邻顶点列表构成的数组,并以该顶点作为索引.比如,如果顶点 2 与顶点 0. 1.3.4 相连,那么就将0.1.3.4存储在数组中索引为 2 的位置. Graph 类定义图 function Graph(v) { this.vertice…
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素.队列用于存储按 顺序排列的数据,先进先出. 队列的两种主要操作是:向队列中插入新元素和删除队列中的元素.插入操作也叫做入 队,删除操作也叫做出队.入队操作在队尾插入新元素,出队操作删除队头的元素. 用数组实现的队列 function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; th…
最近在看了<数据结构与算法JavaScript描述>这本书,对大学里学的数据结构做了一次复习(其实差不多忘干净了,哈哈).如果能将这些知识捡起来,融入到实际工作当中,估计编码水平将是一次质的飞跃.带着这个美好的愿望,开始学习吧O(∩_∩)O~~ 我们知道在JS中,常常用来组织数据的无非是数组和对象(这些基础就不介绍了).但在数据结构中,还有一些抽象的数据类型:列表.栈.队列.链表.字典.散列.集合.二叉树.图等,可以用来更好的对实际场景建模.当然这些数据类型,原生JS不支持,那么就需要通过封装…