-
JavaScript 数据结构与算法(十一)树
什么是树?真实的树: 树的特点: 树一般都有一个根,连接着根的是树干; 树干会发生分叉,形成许多树枝,树枝会继续分化成更小的树枝; 树枝的最后是叶子; 现实生活中很多结构都是树的抽象,模拟的树结构相当于旋转 180° 的树。 树结构对比于数组... -
JavaScript 数据结构与算法(十)哈希表
认识哈希表哈希表是一种非常重要的数据结构,几乎所有的编程语言都直接或者间接应用这种数据结构。 哈希表通常是基于数组实现的,但是相对于数组,它存在更多优势: 哈希表可以提供非常快速的 插入-删除-查找 操作。 无论多少数据,插入和删除值都只需接近常量... -
JavaScript 数据结构与算法(九)字典
字典字典特点 字典存储的是键值对,主要特点是一一对应。 比如保存一个人的信息 数组形式:[19,"Tom", 1.65],可通过下标值取出信息。 字典形式:{"age": 19, "name... -
JavaScript 数据结构与算法(八)集合
集合几乎每种编程语言中,都有集合结构。集合比较常见的实现方式是哈希表,这里使用 JavaScript 的 Object 进行封装。 集合特点 集合通常是由一组无序的、不能重复的元素构成。 数学中常指的集合中的元素是可以重复的,但是计算机中集合的元素... -
JavaScript 数据结构与算法(七)双向链表
单向链表和双向链表单向链表 只能从头遍历到尾或者从尾遍历到头(一般从头到尾)。 链表相连的过程是单向的,实现原理是上一个节点中有指向下一个节点的引用。 单向链表有一个比较明显的缺点:可以轻松到达下一个节点,但回到前一个节点很难,在实际开发中, 经常会... -
JavaScript 数据结构与算法(六)单向链表
认识链表链表和数组链表和数组一样,可以用于存储一系列的元素,但是链表和数组的实现机制完全不同。 数组 存储多个元素,数组(或列表)可能是最常用的数据结构。 几乎每一种编程语言都有默认实现数组结构,提供了一个便利的 [] 语法来访问数组元素。 数组... -
JavaScript 数据结构与算法(五)优先队列
场景生活中类似优先队列的场景: 优先排队的人,优先处理。 (买票、结账、WC)。 排队中,有紧急情况(特殊情况)的人可优先处理。 优先队列优先级队列主要考虑的问题: 每个元素不再只是一个数据,还包含优先级。 在添加元素过程中,根据优先级放入到正... -
JavaScript 数据结构与算法(四)队列
认识队列队列(Queue)是一种运算受限的线性表,特点:先进先出。(FIFO:First In First Out) 受限之处: 只允许在表的前端(front)进行删除操作。 只允许在表的后端(rear)进行插入操作。 生活中类似队列结构的场景:... -
JavaScript 数据结构与算法(三)栈
数组是一个线性结构,并且可以在数组的任意位置插入和删除元素。但是有时候,我们为了实现某些功能,必须对这种任意性加以限制。栈和队列就是比较常见的受限的线性结构。 什么是栈栈(stack)是一种运算受限的线性表: LIFO(last in first ... -
JavaScript 数据结构与算法(二)数组
几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。数组通常情况下用于存储一系列同一种数据类型的值。但在 JavaScript 里,数组中可以保存不同类型的值。但我们还是要遵守最佳实践,别这么做(大多数语言都没这个能力)。 创建和初...