数据结构试卷(20050108)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构期末试卷2005/01/08
班级__________姓名___________学号_______成绩___________ 一、填空和选择(共15分)
1.在n个元素的顺序表中插入或删除一个元素,需平均移动______个元素。
2.在双向链表p所指结点之后插入s所指结点的操作是______________
A.p→right=s; s→left=p; p→right→left=s; s→right=p→right;
B.p→right=s; p→right→left=s; s→left=p; s→right=p→right;
C.s→left=p; s→right=p→right; p→right=s; p→right→left=s;
D.s→left=p; s→right=p→right; p→right→left=s; p→right=s;
3.在数据结构中,从逻辑上可以把数据结构分成_________。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.内部结构和外部结构
4.算法分析的两个主要方面是____。
A.空间复杂性和时间复杂性B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
5.线性表的顺序存储结构是一种______的存储结构,线性表的链式存储结构是一种______的存储结构。
A.随机存取B.顺序存取C.索引存取D.散列存取
6.向量、栈和队列都是______结构,可以在向量的________位置插入和删除元素;对于栈只能在_________插入和删除元素;对于队列只能在_______插入元素和在_______删除元素。
7.设循环队列中数组的下标范围是1~n,其头尾指针分别为f和r,则其元素个数为___________。
A.r-f B.r-f+1 C.(r-f) mod n +1 D.(r-f+n) mod n
8.将下三角矩阵A[7,7]的下三角部分逐行地存储到起始地址为1000的内存单元中(下标从0开始,不存储上三角部分),已知每个元素占4个单元,则A[5,4]的地址是_____________。
9.某二叉树的前序遍历结点访问顺序是abdgcefh, 中序遍历的结点访问顺序是dgbaechf, 则其后序遍历的结点访问顺序是______
A.bdgcefha
B.gdbecfha
C.bdgaechf
D.gdbehfca
二、简答题
1.(4分)求一棵满k叉树上的叶子结点数n0和非叶子结点数n k之间满足的关系。
2.(4分)假设高度为H的二叉树上只有度为0和度为2的结点,问此类二叉树中结点数可能达到的最大值和最小值各是多少?
3.(6分)根据下面的矩阵,写出相应的三元组表,并写出矩阵转置后的三元组表。(不要求过程)
0 12 9 0 0 0 0
0 0 0 0 5 0 0
-3 0 0 0 0 14 0
0 0 13 0 0 0 0
0 18 0 0 0 0 0
15 0 0 0 0 0 0
三、(10分)判断以下序列是否为小(顶)根堆?若否,则以最少的移动次数将它们调整为小(顶)根堆。(要求画出最后的堆结构和线性序列)(1)(19,78,32,66,26,58,46,95,89,31)
(2)(113,98,69,35,68,25,43,19,31,55,16,29)
四、(8分)设有关键码序列(Q,H,C,Y,Q,A,M,S,R,D,F,X),要求按照关键码值递增的次序进行排序。
(1)若采用初始步长为4的Shell(希尔)排序法,写出一趟排序的结果;(2)若采用以第一个元素为分界元素(枢轴)的快速排序法,写出一趟排序的结果。
六、综合题
1.以下各图:
(1)(4分)分别画出和下列树对应的各个二叉树;
(2)(4分)对各棵树按树的遍历规则给出先根遍历序列、后根遍历序列;
(3)(4分)对(1)中得到的各棵二叉树给出先根遍历序列、后根遍历序列。
1
234
567910
8
111213
A
B
C D E F G
I
H
2.(10分)画出下图所示的无向图的邻接表(顶点由A到H排列),并根据所得邻接表给出深度优先和广度优先搜索遍历该图所的顶点序列。
A
B
H
C
G
F
D
E
3.(11分)假设用于通信的电文仅由10个字符(A,B,C,D,E,F,G,H,I,J)组成,字符在电文中出现的频率分别为(0.10, 0.19, 0.02, 0.05, 0.17, 0.03, 0.21, 0.07, 0.15, 0.01)。
(1)画出哈夫曼树;
(2)最长的编码为几位,对应哪些字符?最短的编码为几位,对应哪些字符。(3)计算其带权路径长度。
4.(6分)设一个散列表包含hashSize=13个表项,其下标从0到12,采用链地址(拉链)法解决冲突. 请按以下要求,将下列关键码散列到表中.
(10 100 32 45 58 126 3 29 200 400 0)
(1) 散列函数采用除留余数法,用%hashSize(取余运算)构造hash表;
(2) 并计算查找成功时的平均查找长度。
七、(14分)完成下列折半(二分)查找算法
(ST为顺序表,key为要查找的关键字。)
.
int Search_Bin(SSTable ST, KeyType key ){ //
low=1; high=ST.length;
while (________________________________){
mid=____________________;
if (__________________________________)
return _____________;
else if (____________________________________) high=____________________;
else low=____________________;
}
return 0;
}