大学数据结构 期末考试 模拟题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较多少个结点。
A n
B n/2
C (n-1)/2
D (n+1)/2
2.栈结构通常采用的两种存储结构是
A 顺序存储结构和链式存储结构
B 散列方式和索引方
C 链表存储结构和数组
D 线性存储结构和非线性存储结构
3.队列操作的原则是
A 先进先出
B 后进先出
C 只能进行插入
D 只能进行删除
4.以下叙述中正确的是
A 串是一种特殊的线性表
B 串的长度必须大于零
C 串中无素只能是字母
D 空串就是空白串
5.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是
A m-n
B m-n-1
C n+1
D 无法确定
6.利用二叉链表存储树,则根结点的右指针是
A 指向最左孩子
B 指向最右孩子
C 空
D 非空
7.在下列存储形式中,哪一个不是树的存储形式
A 双亲表示法
B 孩子链表表示法
C 孩子兄弟表示法
D 顺序存储表示法
8.带权有向图G用邻域矩阵A存储,则顶点i的入度等于A中的
A 第i行非∞的元素之和
B 第i列非∞的元素之和
C 第i行非∞且非零元素个数
D 第i列非∞且非零的元素个数
9.从具有n个结点的二叉排序树中查找一个元素时,最坏情况下的时间复杂度为
A O(n)
B O(1)
C O(log2n)
D O(n2)
10.下述几种排序方法中,要求内存量最大的是
A 归并排序
B 插入排序
C 选择排序
D 快速排序
二、判断题
1. 用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。
2. 对于同一组待输入的关键码集合,虽然各关键码的输入次序不同,但得到的二叉搜索树都是相同的。
3. 顺序表的插入和删除一个数据元素,每次操作平均只有近一半的元素需要移动。
4. 在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上一定不相邻。
5. 线性表中,每一个元素均存在后继。
6. 在平衡二叉树中,向某个平衡因子不为零的结点的树中插入一新结点,必引起平衡旋转。
7. 对线性表进行二分查找时,要求线性表以链接方式存储,且结点按关键字有序排序。
8. 对于查找表的查找过程中,若被查找的数据元素不存在,则把该数据元素插入到集合中。这种方式主要适合于静态查找表。
9. 对于两棵具有相同关键码集合而形状不同的二叉搜索树,按中序遍历它们得到的序列的各元素的顺序是一样的。
10. 图的深度优先遍历不适用于有向图。
三、填空题
1. 设串的长度为n ,则它的子串个数为。
2. 广义表A=(a,b,(c,d),(e,(f,g))),要取出元素d 需要进行的操作是 。
3. 在一个单链表中,已知q 所指结点是p 所指结点的前驱结点,若在q 和p 之间插入s 结点,则执行 。
4. 一个队列的数据入列序列是1, 2, 3, 4,则队列的出队时输出序列是 。
5. 数组A 中,每个元素A 的长度为3个字节,行下标i 从1到8,列下标j 从1到10,从首地址SA 开始连续存放在存储器内,该数组按行存放时,元素A[8][5]的起始地址为 。
6. 已知一算术表达式的中缀形式为A+B*C-D/E ,后缀形式为ABC*+DE/-,其前缀形式
为 。
7. 一棵具有 n 个结点的完全二叉树的树高度(深度)是 。
8. 一棵完全二叉树上有1001个结点,其中叶子结点的个数是 。
9. 关键路径是指 。
10. 散列表的平均查找长度与 有关。
四、解答题
1. 已知关键码{25, 49, 40, 25, 16, 21, 08, 30, 13}
(1)写出一趟快速排序的结果
(2)写出希尔排序每趟排序的结果
2. 已知关键码{18, 73, 10, 05, 68, 99, 27, 41, 51, 32, 25}画出二叉排序树
3. 设字符{a, b, c, d, e, f, g}出现的频率为{8, 12, 4, 5, 26, 16, 9},构造Huffman 编码树,给出二进制编码,并计算WPL 。
4. 使用Dijkstra 算法求v 0到各个顶点的最短路径
5. 已知关键码{47, 7, 29, 11, 16, 92, 22, 8, 3},哈希函数为H(key)=key mod 11,用线性探测再散列解决冲突,并说明解决冲突的过程。
五、编程题
写出折半插入排序的程序。
void BinSort(int data[], int length); v 0
v 1 v 4 v 2 v 3 v 5
45
50 10 20 15 3 10 15 20
35 30