参考:
- https://blog.csdn.net/weixin_43269174/article/details/90340471
- https://courses.cs.washington.edu/courses/cse373/14sp/lecture28.pdf
- http://www.cs.bham.ac.uk/~jxb/DSA/dsa.pdf
一、数据结构
数据结构 | 英文名 | 描述 | 评价 |
---|---|---|---|
数组 | Array | 从一维至多维,每一个位置对应唯一的索引;在中间部分插入一个数,其后每一个数的索引往后推进一位 | 通过索引,取值方便;但数据插入和删除操作效率低下 |
链表 | Linked List | 由节点一一相连组成的链条;每一个节点包含该节点的数据以及指引上下游节点的指针;与图的区别在于每个节点最多附带两个指针 | 数据插入和删除方便(只需改变指针);但只能通过遍历节点检索数据,效率低下 |
散列表 | Hash Table | 又称为哈希表,(Key, value) 对,Key必须可以比较;数据以对象形式存储,每个对象对应唯一的索引Key;与数组的区别在于数组的唯一索引对应一个数值,散列表的唯一索引对应一个对象;这个对象可以是任何结构的数据; | 通过索引,取值便利,相较于数组插入和删除效率高;最适合查找求解的问题与给定值相等的记录,不适用范围查找、同义词等 |
栈 | Stack | 遵从Last-In-First-Out(LILO)的规则,后入栈的先离开; | 是限定仅在表尾进行插入和删除操作的线性表 |
队列 | Queue | 遵从First-in-First-Out(FIFO)的规则,先进入队列的先离开; | 只能在队头删除,队尾插入 |
树 | Tree | 由层属关系的节点相连构成;与链条和图的不同在于不存在环形结构;最常见为二叉树,可用顺序存储和链式存储表示,通过前序、中序、后序、层序遍历;除此之外还有N元素、平衡树、红黑树等 | - |
图 | Graph | 由节点相连组成网状结构,节点又成为顶点,分为有向图和无向图;用深度优先或广度优先遍历; | - |
堆 | Heap | 满足特定条件的完全二叉树;分为大根堆和小根堆,大根堆的父节点数值大于等于子节点数值,小节点相反;常用于数组排序 | - |
数据结构 | 遍历名称 | 英文 | 描述 |
---|---|---|---|
图 | 深度优先 | Depth-first search(DFS) | 先递归遍历一条路径,后回退到其它没遍历的路径 |
广度优先 | Breadth-first search(BFS) | 逐层遍历离开始节点最近的 | |
树 | 前序遍历 | Pre-order | root, left subtree, right subtree |
中序遍历 | In-order | left subtree, root, right subtree | |
后序遍历 | Post-order | left subtree, right subtree, root |