1.简单
双向链表中的每个节点包含什么?
- A数据和两个指针,一个指向下一个节点,一个指向再下一个节点
- B数据、指向下一个节点的指针和指向前一个节点的指针
- C只有数据和指向下一个节点的指针
- D两份数据和一个指针
2.简单
哪种操作在数组中很慢,但在链表头部却很快?
- A通过索引读取最后一个元素
- B求定长数组的长度
- C访问第 5 个元素
- D在开头插入元素
3.简单
什么是双端队列(deque)?
- A按优先级排序的队列
- B只允许在尾部删除的队列
- C共享一个数组的两个独立队列
- D允许在两端插入和删除的结构
4.中等
含 V 个顶点的图的邻接矩阵占用多少内存?
- AO(E)
- BO(log V)
- CO(V + E)
- DO(V²)
5.中等
深度优先搜索(迭代版本)使用哪种数据结构?
- A仅哈希表
- B堆
- C栈
- D队列
6.中等
一个大小为 7 的哈希表使用 h(k) = k mod 7 和线性探测。插入 10 之后,17 存放在哪里?
- A下标 4
- B下标 6
- C下标 0
- D下标 3
7.困难
线段树(segment tree)通常用于:
- A存储图的边
- B在 O(log n) 时间内处理区间查询(如区间求和)和更新
- C通过把每个前缀存储在单独的树节点中,按字母顺序对字符串排序
- D实现栈
8.困难
你必须用 O(k) 的内存从 n 个数的数据流中保留最小的 k 个值。哪种方法能在 O(n log k) 时间内完成?
- A一个保存最后 k 个值的 FIFO 队列
- B一个保存全部 n 个值的最小堆,最后从中弹出 k 个最小值
- C一个包含全部 n 个值的有序数组
- D一个大小为 k 的最大堆,当出现更小的值时替换其根
答案
- 1. B · 数据、指向下一个节点的指针和指向前一个节点的指针
- 2. D · 在开头插入元素
- 3. D · 允许在两端插入和删除的结构
- 4. D · O(V²)
- 5. C · 栈
- 6. A · 下标 4
- 7. B · 在 O(log n) 时间内处理区间查询(如区间求和)和更新
- 8. D · 一个大小为 k 的最大堆,当出现更小的值时替换其根
完整分步解答:请在 examproblems.com 上练习本主题。