暨南大学2023年830答案
单项选择题(每题 2 分,共 20 分)
- 以下数据结构中, ( )是非线性数据结构
A.字符串 B.树 C.队列 D.栈 - 请选择下面程序段的时间复杂度( )
i = 1;
while (i <= n)
i = i * 3;
A. O(n) B. O(log3 n) C. O(n2) D. O(i * n) - 顺序表中第一个元素的存储地址为 120,每个元素的长度为 5,则第 4 个元素的地址
为( )
A. 135 B. 140 C. 130 D. 145 - 在单链表中,要将 L 所指节点插入到 M 所指节点之后,其语句应为( )
A. L->next = M+1; M->next = L;
B. (*M).next = L; (*L).next = (*M).next;
C. L->next = M->next; M->next = L->next;
D. L->next = M->next; M->next = L; - 若让元素 1,2,3,4,7 依次进栈,则出栈顺序不可能为( )
A. 7, 4, 3, 2, 1 B. 4, 3, 1, 2, 7
C. 2, 1, 7, 4, 3 D. 2, 3, 7, 4, 1 - 假设栈 S 与队列 Q 的初始状态为空,元素 e1、e2、e3、e4、e5 和 e6 依次进入栈 S,一个元素出栈后即进入 Q,若 6 个元素出队的序列是 e2、e4、e3、e6、e5 和 e1,则栈 S的容量至少为( )
A.2 B. 4 C. 3. D.6 - 假设以行序列为主序存储二维数组 A = array[1…100,1…100],设每个数据元素占 2 个存储单元,基地址为 10,则 LOC[5, 5] = ( )
A.808 B.1010 C.818 D.1020 - 由 3 个不同结点可计算出多少种不同的二叉树?( )
A. 3 B. 4 C. 5 D. 6 - 广度优先遍历类似于二叉树的( )
A. 先序遍历 B. 中序遍历 C. 层次遍历 D. 后序遍历 - 设哈希表长为 14,哈希函数是 H(key)=key%11,表中已有数据的关键字为 15,38,61,84 共四个,现要将关键字为 49 的元素加到表中,用二次探测法解决冲突,则放入
的位置是( )
A.8 B.3 C.5 D.9
选择题答案
1. B.树
2. B. O(log3 n)
3. A. 135
4. D. L->next = M->next; M->next = L;
5. B. 4, 3, 1, 2, 7
6. C. 3
7. C.818
8. C. 5
9. C. 层次遍历
10. D.9
二.填空题(每空 2 分,共 20 分)
- 设一组初始记录关键字序列为(20,12,42,31,18,14,28),则根据这些记录关
键字构造的二叉排序树的平均查找长度是__________。 - 设完全有向图中有 n 个顶点,则该完全有向图中共有__________条有向边;设完全
无向图中有 n 个顶点,则该完全无向图中共有___________条无向边。 - for(i=1,t=1,s=0;i<=n;i++) {t=t*i;s=s+t;}的时间复杂度为___________。
- 在快速排序、堆排序、归并排序中,_____________排序是稳定的。
- 设输入序列为 1、2、3,则经过栈的作用后可以得到__________种不同的输出序列。
- 在堆排序和快速排序中,如果从平均情况下排序的速度最快的角度来考虑应最好选
择_______排序,如果从节省存储空间的角度来考虑则最好选择_________排序。 - 设一棵完全二叉树中有 500 个结点,则该二叉树的深度为_________;若用二叉链表
作为该完全二叉树的存储结构,则共有_________个空指针域
填空题答案
1.ASL=2.714
【查找成功的平均查找长度为:∑(本层高度*本层元素个数)/节点总数=(1*1+2*2+3*2+2*4)/7】
2.完全有向图中有 n 个顶点,则该完全有向图中共有 n*(n-1) 条有向边;
设完全无向图中有 n 个顶点,则该完全无向图中共有 n*(n-1)/2 条无向边。
3.时间复杂度为 O(n)
4.在快速排序、堆排序、归并排序中,归并排序是稳定的。
5.设输入序列为 1、2、3,则经过栈的作用后可以得到5种不同的输出序列。
6.在堆排序和快速排序中,如果从平均情况下排序的速度最快的角度来考虑
7.应最好选择快速排序,如果从节省存储空间的角度来考虑则最好选择堆排序。
8.设一棵完全二叉树中有 500 个结点,则该二叉树的深度为 9;
若用二叉链表作为该完全二叉树的存储结构,则共有 501 个空指针域。
【500个结点,深度最少为9,完全9层二叉树501个结点,最后一层共256个点,但少一个点,所以空指针域是256*2-2+1=501】
三.判断题(每题 2 分,共 20 分,正确的选 T,错误的选 F)
- 冒泡排序在初始关键字序列为逆序的情况下执行的交换次数最多。( )
- 层次遍历初始堆可以得到一个有序的序列。( )
- 线性表的顺序存储结构比链式存储结构更好。( )
- 对链表进行插入和删除操作时不必移动链表中结点。( )
- 用邻接矩阵作为图的存储结构时,则其所占用的存储空间与图中顶点数无关而与图中
边数有关。( ) - 子串“ABC”在主串“AABCABCD”中的位置为 2。( )
- 希尔排序算法的时间复杂度为 O(n^2)。( )
- 分块查找的基本思想是首先在索引表中进行查找,以便确定给定的关键字可能存在的
块号,然后再在相应的块内进行顺序查找。( ) - 非空的双向循环链表中任何结点的前驱指针均不为空。( )
- 如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。( )
判断题答案
1.T
2.F
3.F
4.T
5.F
6.T
7.F
8.T
9.T
10.T
四. 简答题(共 40 分)
- 存储结构由哪两种基本的存储办法实现?(6 分)
- 假定对有序表:(3, 4, 5, 7, 24, 30, 42, 54, 63, 72, 87, 95)进行折半查找,试回答下列问题:
(10 分)
(1)画出描述折半查找过程的判定树;
(2)若查找元素 54,需依次与哪些元素比较?
(3)假定每个元素的查找几率相等,求查找成功时的平均查找长度。 - 将两个递增的有序链表合并为一个递增的有序链表,要求结果链表仍使用原来两个链表的存储空间,只用一个工作单元存储空间,表中不允许有重复的数据。(8 分)
- 设待排序的序列为{12, 2, 16, 30, 28, 10, 20, 6, 18},请写出使用直接插入排序方法下,每趟排序结束后的序列情况。(8 分)
- 设一棵二叉树的先序序列:A B D F C E G H,中序序列:B F D A G E H C,请画出这棵二叉树与后序线索二叉树。(8 分)
简答题答案
-
存储结构通常由两种基本的存储办法实现:顺序存储和链式存储。顺序存储是指用一组地址连续的存储单元依次存储线性表的数据元素。链式存储则是指用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
-
(1)描述折半查找过程的判定树如下:
30
├── 7
│ ├── 4
│ │ ├── 3
│ │ └── 5
│ └── 24
├── 72
│ ├── 54
│ │ ├── 42
│ │ └── 63
│ └── 95
│ ├── 87
│ └── -
(2)若查找元素 54,需依次与30、72、54这三个元素比较。
(3)假设每个元素的查找几率相等,查找成功时的平均查找长度可以通过以下公式计算:
A S L = 1 n ∑ i = 1 n d e p t h ( k i ) ASL = \frac{1}{n} \sum_{i=1}^{n} depth(k_i) ASL=n1