数据结构
一、栈
后进先出的数据结构,用array的push() 和pop() 方法模拟。
二、队列
先进先出的数据结构,用array的shift()和unshift()方法模拟。
三、链表
多个元素组成的列表,元素存储不连续,用next指针连在一起。
链表和数组的区别
数组:增删非首尾元素时往往需要移动元素。
链表:增删非首尾元素,不需要移动元素,只需要更改next指针即可。
可以用Object模拟链表。
如:
const a = { val: "a" } const b = { val: "b" } const c = { val: "c" } const d = { val: "d" } a.next = b b.next = c c.next = d
四、集合
一种无序且唯一的数据结构。
ES6中有集合,名为Set
集合的常用操作:去重、判断某个元素是否在集合中、求交集。
五、字典
与集合类似,字典也是一种存储唯一的数据结构,但是他以键值对的形式存储。
ES6中有字典,名为Map
字典的常用操作:键值对的增删改查。
六、树
一种分层数据的抽象模型。
前端工作中常见的树包括:DOM
树、级联选择、树形控件。。。。。
JS中没有树,但是可以用Object和Array构建树。
{、 type: 'div', children: [ type: 'sapn', children: [] ] }
七、图
图是网络结构的抽象模型,是一组由边连接的节点
图可以表示任何二元关系,比如道路、航班
可以用Object和Array表示
图的表示法: 邻接矩阵、邻接表、关联矩阵。。。
用处:
深度优先遍历
广度优先遍历
八、堆