1.简单
双向链表中的每个节点包含什么?
- A数据、指向下一个节点的指针和指向前一个节点的指针
- B只有数据和指向下一个节点的指针
- C数据和两个指针,一个指向下一个节点,一个指向再下一个节点
- D两份数据和一个指针
2.简单
删除队首元素的队列操作叫什么?
- APush
- BEnqueue
- CDequeue
- DInsert
3.简单
哪种操作在数组中很慢,但在链表头部却很快?
- A访问第 5 个元素
- B求定长数组的长度
- C在开头插入元素
- D通过索引读取最后一个元素
4.中等
如何在二叉搜索树中找到最小的键?
- A访问每个叶子并进行比较
- B从根开始沿右子节点走,直到没有右子节点为止
- C从根开始沿左子节点走,直到没有左子节点为止
- D只看根
5.中等
你持有一个位于链表中间的节点的引用。在哪种链表中可以在 O(1) 内删除它?
- A双向链表
- B有序数组
- C单链表
- D动态数组
6.中等
对于有 V 个顶点、E 条边的图,邻接表占用多少内存?
- AO(V + E)
- BO(V × E)
- CO(V²)
- DO(E²)
7.困难
布隆过滤器(Bloom filter)回答"该元素是否在集合中?"时:
- A总是给出精确答案
- B可能出现假阴性,但不会出现假阳性
- C可能出现假阳性,但不会出现假阴性
- D只能回答数字的情况
8.困难
为什么服务器可能会从一个通用哈希函数族中随机选择其哈希函数?
- A使哈希表有序
- B免去对表进行扩容的需要
- C使攻击者极难选出许多全部发生冲突的键
- D保证任何两个键永远不会发生冲突,无论攻击者发送什么键
答案
- 1. A · 数据、指向下一个节点的指针和指向前一个节点的指针
- 2. C · Dequeue
- 3. C · 在开头插入元素
- 4. C · 从根开始沿左子节点走,直到没有左子节点为止
- 5. A · 双向链表
- 6. A · O(V + E)
- 7. C · 可能出现假阳性,但不会出现假阴性
- 8. C · 使攻击者极难选出许多全部发生冲突的键
完整分步解答:请在 examproblems.com 上练习本主题。