聪明的数据结构配上愚笨的代码,远比反过来要好得多。
—Eric Raymond
这本教科书在讲解数据结构的过程中,还力图兼顾面向对象设计。如果忽略掉它的啰嗦之处,专注于数据结构本身的话,那么它还是不错的。
文摘
单链表结构相对于数组的主要优点并不是时间性能,而是内存性能。链表结构的物理大小不会超过其逻辑大小,当调整链表结构大小的时候,其时间和内存都是常数。
回溯算法从一个预定义的起始状态开始,随后从一个状态移动到另一个状态,以搜索想要的最终状态。回溯算法主要通过使用栈或递归来实现。
计算机科学中的大多数队列,都涉及调度对共享资源的访问。
树的最重要和有用的功能并不是定位其项,而是父节点和子节点之间的关系。二叉树的遍历有4种标准的类型:前序遍历、中序遍历、后序遍历、层序遍历。
一个完全二叉树的数组表示中,对于位于位置i的任意项,其相关项的位置:
项 |
位置 |
---|---|
父节点 |
(i-1) // 2 |
左兄弟节点(如果有的话) |
i-1 |
右兄弟节点(如果有的话) |
i+1 |
左孩子节点(如果有的话) |
i*2 + 1 |
右孩子节点(如果有的话) |
i*2 + 2 |
图的两种常用的表示方式是相邻矩阵和邻接表。