1.简单
哪种操作在数组中很慢,但在链表头部却很快?
- A求定长数组的长度
- B通过索引读取最后一个元素
- C在开头插入元素
- D访问第 5 个元素
2.简单
什么是带权图?
- A边数多于顶点数的图
- B每条边都有一个数值(如代价或距离)的图
- C有些顶点因为边更多而比其他顶点更重的图
- D存储在磁盘上的图
3.简单
哪种数据结构遵循"后进先出"(LIFO)原则?
- A队列(Queue)
- B栈(Stack)
- C哈希表(Hash table)
- D链表(Linked list)
4.中等
Dijkstra 算法使用哪种抽象数据类型来选择下一个要处理的顶点?
- A栈
- B无序集合
- C最小优先队列
- DFIFO 队列
5.中等
为什么在实践中遍历数组往往比遍历同样长度的链表快得多?
- A数组遍历总共是 O(1),而链表遍历是 O(n)
- B数组元素是连续存放的,因此能很好地利用 CPU 缓存
- C数组比较数值所用的指令更少
- D链表总是把元素存储在磁盘上
6.中等
在使用开放寻址法的哈希表中,可能的最大负载因子是多少?
- A0.5
- B2
- C1
- D没有最大值
7.困难
与有序链表相比,跳表(skip list)的主要优势是什么?
- A它以无序方式存储键
- B保证 O(1) 的查找,因为每个节点都存有指向其他所有节点的指针
- C利用多层前向指针,实现期望 O(log n) 的查找
- D它不占用额外内存
8.困难
红黑树必须满足哪条性质?
- A根节点必须是红色
- B每个红色节点的子节点必须是红色,因此红色节点总是沿着通向叶子的路径连成不间断的链
- C从任一节点到其所有后代叶子的每条路径上,黑色节点的数量都相同
- D每个节点都必须是红色
答案
- 1. C · 在开头插入元素
- 2. B · 每条边都有一个数值(如代价或距离)的图
- 3. B · 栈(Stack)
- 4. C · 最小优先队列
- 5. B · 数组元素是连续存放的,因此能很好地利用 CPU 缓存
- 6. C · 1
- 7. C · 利用多层前向指针,实现期望 O(log n) 的查找
- 8. C · 从任一节点到其所有后代叶子的每条路径上,黑色节点的数量都相同
完整分步解答:请在 examproblems.com 上练习本主题。