数据结构试卷(三)
一、选择题 ( 每题 1 分,共 20 分)
1.设某数据结构的二元组形式表示为 A=(D ,R),D={01 ,02,03,04,05, 06,07,08, 09},R={r} , r={<01 ,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>} ,则数据结构 A 是( )。
(A) 线性结构 (B) 树型结构 (C) 物理结构 (D) 图型结构
2.下面程序的时间复杂为( )
for(i=1, s=0; i<=n ; i++ ) {t=1 ;for(j=1 ;j<=i ;j++) t=t*j ; s=s+t;}
(A) O( n) (B) O(n 2 ) (C) O(n 3 ) (D) O(n 4 )
3.设指针变量 p 指向单链表中结点 A ,若删除单链表中结点 A ,则需要修改指针的操作序列为( )。
(A) q=p->next ;p->data=q->data ;p->next=q->next ; free(q) ;
(B) q=p->next ;q->data=p->data ;p->next=q->next ; free(q) ;
(C) q=p->next ;p->next=q->next ;free(q) ;
(D) q=p->next ;p->data=q->data ;free(q) ;
4.设有 n 个待排序的记录关键字,则在堆排序中需要( )个辅助记录单元。
(A) 1 (B) n (C) nlog 2n (D) n 2
5.设一组初始关键字记录关键字为 (20 ,15,14,18,21, 36,40,10) ,则以 20 为基准记录的一趟快速
排序结束后的结果为 ( ) 。
(A) 10 ,15,14, 18,20,36,40,21
(B) 10 ,15,14,18,20,40,36,21
(C) 10 ,15,14,20,18,40,36,2l
(D) 15 ,10,14,18,20,36,40,21
6.设二叉排序树中有 n 个结点,则在二叉排序树的平均平均查找长度为( )。
(A) O(1) (B) O(log 2n) (C) (D) O(n 2
)
7.设无向图 G中有 n 个顶点 e 条边,则其对应的邻接表中的表头结点和表结点的个数分别为( )。
(A) n,e (B) e ,n (C) 2n ,e (D) n , 2e
- 设某强连通图中有 n 个顶点,则该强连通图中至少有( )条边。
(A) n(n-1) (B) n+1 (C) n (D) n(n+1)
9.设有 5000 个待排序的记录关键字,如果需要用最快的方法选出其中最小的 10 个记录关键字,则用下
列( )方法可以达到此目的。
(A) 快速排序 (B) 堆排序 (C) 归并排序 (D) 插入排序
- 下列四种排序中( )的空间复杂度最大。
(A) 插入排序 (B) 冒泡排序 (C) 堆排序 (D) 归并排序
二、填空殖 ( 每空 1 分 共 20 分)
-
数据的物理结构主要包括 _____________和______________两种情况。
-
设一棵完全二叉树中有 500 个结点,则该二叉树的深度为 __________;若用二叉链表作为该完全二叉
树的存储结构,则共有 ___________个空指针域。
-
设输入序列为 1、2、3,则经过栈的作用后可以得到 ___________种不同的输出序列。
-
设有向图 G用邻接矩阵 A[n][n] 作为存储结构,则该邻接矩阵中第 i 行上所有元素之和等于顶点 i 的
,第 i 列上所有元素之和等于顶点 i 的。
-
设哈夫曼树中共有 n 个结点,则该哈夫曼树中有 ________个度数为 1 的结点。
-
设有向图 G中有 n 个顶点 e 条有向边,所有的顶点入度数之和为 d,则 e 和 d 的关系为 _________。
-
__________遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序) 。
-
设查找表中有 100 个元素,如果用二分法查找方法查找数据元素 X,则最多需要比较 ________次就可
以断定数据元素 X 是否在查找表中。
- 不 论 是 顺 序 存 储 结 构 的 栈 还 是 链 式 存 储 结 构 的 栈 , 其 入 栈 和 出 栈 操 作 的 时 间 复 杂 度 均 为
____________。
- 设有 n 个结点的完全二叉树,如果按照从自上到下、从左到右从 1 开始顺序编号,则第 i 个结点的双
亲结点编号为 ____________,右孩子结点的编号为 ___________。
- 设一组初始记录关键字为 (72 ,73,71,23,94,16,5) ,则以记录关键字 72 为基准的一趟快速排序
结果为 ___________________________ 。
- 设有向图 G中有向边的集合 E={<1 ,2>, <2,3>,<1,4>,<4,2>,<4,3>} ,则该图的一种拓扑序
列为 ____________________ 。
- 下列算法实现在顺序散列表中查找值为 x 的关键字,请在下划线处填上正确的语句。
struct record{int key; int others;};
int hashsqsearch(struct record hashtable[ ],int k)
{
int i,j; j=i=k % p;
while (hashtable[j].key!=k&&hashtable[j].flag!=0){j=(____) %m; if (i==j) return(-1);}
if (_______________________ ) return(j); else return(-1);
}
- 下列算法实现在二叉排序树上查找关键值 k,请在下划线处填上正确的语句。
typedef struct node{int key; struct node *lchild; struct node *rchild;}bitree;
bitree *bstsearch(bitree *t, int k)
{
if (t==0 ) return(0);else while (t!=0)
if (t->key==k); else if (t->key>k) t=t->lchild; else;
}
三、计算题 ( 每题 10 分,共 30 分)
1.已知二叉树的前序遍历序列是 AEFBGCDHIKJ ,中序遍历序列是 EFAGBCHKIJD ,画出此二叉树,并画
出它的后序线索二叉树。
2.已知待散列的线性表为( 36,15,40,63,22),散列用的一维地址空间为 [0..6],假定选用的散列函数
是 H(K)= K mod 7 ,若发生冲突采用线性探查法处理,试:
(1)计算出每一个元素的散列地址并在下图中填写出散列表: 0 1 2 3 4 5 6
(2)求出在查找每一个元素概率相等情况下的平均查找长度。
3.已知序列( 10, 18,4,3,6,12,1,9,18,8)请用快速排序写出每一趟排序的结果。
四、算法设计题 ( 每题 15 分,共 30 分)
1. 设计在单链表中删除值相同的多余结点的算法。
2. 设计一个求结点 x 在二叉树中的双亲结点算法。
数据结构试卷(三)参考答案
1.B 2.B 3.A 4.A 5.A
6.B 7.D 8.C 9.B 10.D
第 3 小题分析:首先用指针变量 q 指向结点 A 的后继结点 B,然后将结点 B 的值复制到结点 A 中,最
后删除结点 B。
第 9 小题分析: 9 快速排序、 归并排序和插入排序必须等到整个排序结束后才能够求出最小的 10 个数,
而堆排序只需要在初始堆的基础上再进行 10 次筛选即可,每次筛选的时间复杂度为 O(log 2n) 。
二、填空题
-
顺序存储结构、链式存储结构
-
9,501
-
5
-
出度,入度
-
0
-
e=d
-
中序
-
7
-
O(1)
-
i/2 ,2i+1
-
(5 ,16, 71,23,72,94,73)
-
(1 ,4,3,2)
-
j+1 ,hashtable[j].key==k
-
return(t) ,t=t->rchild
第 8 小题分析:二分查找的过程可以用一棵二叉树来描述,该二叉树称为二叉判定树。在有序表上进
行二分查找时的查找长度不超过二叉判定树的高度 1+log 2n。
三、计算题
1.
A
E
B
F G
C
D
H
F
K J
NULL
2、H(36)=36 mod 7=1; H1 (22)=(1+1) mod 7=2; ....冲突
H(15)=15 mod 7=1; ... .冲突 H2(22)=(2+1) mod 7=3;
H1(15)=(1+1) mod 7=2;
H(40)=40 mod 7=5;
H(63)=63 mod 7=0;