数据结构中的基础就是数组(顺序存储)和链表(链式存储),记住如下基础概念:
队列和栈可以分别通过数组和链表实现
- 通常情况下我们会用数组实现堆(完全二叉树),用链表也可以实现(二叉搜索树、红黑树、AVL、B树等)
图用二维数组实现就是邻接矩阵,用链表实现就是邻接表
散列表中可以用链表解决散列冲突(拉链法),也可以用数组(线性探测法)
数据结构与算法在前端中的应用
- 你熟知的
DOM
树、AST
树、以及Vue、React
的Virtual DOM
都是树。React Hooks
的本质是数组,React Fiber
是基于链表实现的。HTTP
缓存响应消息 和Vue
的keep-alive
都用到了LRU
算法。- 浏览器前进后退功能通过
栈
实现。TCP
连接实现多路复用时借助了epoll
,而决定epoll
高效的原因:数据结构采用了红黑树
和队列
。- 搜索引擎采用的是
广度优先搜索策略
。