1.简单
哪种数据结构遵循"后进先出"(LIFO)原则?
- A链表(Linked list)
- B栈(Stack)
- C队列(Queue)
- D哈希表(Hash table)
2.简单
哪种操作在数组中很慢,但在链表头部却很快?
- A在开头插入元素
- B求定长数组的长度
- C通过索引读取最后一个元素
- D访问第 5 个元素
3.简单
数组的元素在内存中是如何存储的?
- A存放在由内存页组成的树中
- B分散存放,通过指针相连
- C在一整块连续的内存中,一个接一个地存放
- D存放在由哈希选择的随机位置
4.中等
字典树(Trie,前缀树)特别适合用于:
- A存储矩阵
- B对数字排序
- C自动补全等前缀查找
- D求最短路径
5.中等
关于无向图的邻接矩阵,下列哪项是正确的?
- A它总是上三角矩阵
- B它的主对角线上总是 1
- C它关于主对角线对称
- D每一行恰好有一个 1
6.中等
循环缓冲区(环形缓冲区)通常用于实现:
- A图的遍历
- B固定大小的队列
- C哈希函数
- D二叉搜索树
7.困难
与有序链表相比,跳表(skip list)的主要优势是什么?
- A利用多层前向指针,实现期望 O(log n) 的查找
- B它不占用额外内存
- C它以无序方式存储键
- D保证 O(1) 的查找,因为每个节点都存有指向其他所有节点的指针
8.困难
从二叉搜索树中删除一个有两个子节点的节点,通常的做法是:
- A用它的中序后继(或前驱)替换它,然后删除那个节点
- B删除整棵子树
- C从头重建它下面的整棵子树,并重新插入其中包含的每个键
- D将它与根节点交换
答案
- 1. B · 栈(Stack)
- 2. A · 在开头插入元素
- 3. C · 在一整块连续的内存中,一个接一个地存放
- 4. C · 自动补全等前缀查找
- 5. C · 它关于主对角线对称
- 6. B · 固定大小的队列
- 7. A · 利用多层前向指针,实现期望 O(log n) 的查找
- 8. A · 用它的中序后继(或前驱)替换它,然后删除那个节点
完整分步解答:请在 examproblems.com 上练习本主题。