数据结构试卷及答案(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、综合题(共50分)
1. 对于给定的5个实数W={9,5,13,3,6},试构造Huffman树;并求出该树的最小带权路径长度和各结点的Huffman编码。要求写出Huffman树的构造过程。(10分)
2. 对给定的一组关键字:65,97,76,13,27,49,55,4
写出希尔排序(增量为5,3,1)前2趟排序结果。(6分)
3. 已知一棵二叉树的前序遍历序列和中序遍历序列分别为ABEFIJDGH和EBIFJAGDH。要求:(1)画出这棵二叉树;要求写出分析写出过程;(2)写出这棵二叉树的后序遍历序列。(8分)
4. 已知一组关键字(19,14,23,1,68,20,84),哈希函数为:H(key)=key MOD 13, 哈希表长为m=16,设每个记录的查找概率相等,用线性探测再散列处理冲突,计算每个关键字的哈希地址,构造出哈希表,并计算平均查找长度。(10分)
5. 使用普里姆算法构造下图的最小生成树。要求写出
过程。
(10分)
6. 分析下面程序段的时间复杂度,(要求给出分析计算过程)(6分) m=0;
for (i=1;i<=n; i++) for (j=1; j<=n; j++) m++;
四、算法设计题(每题10分,共20分)
1. 用类C语言编写在带头结点的单链表L中删除第i个元素。
2. 二叉树采用二叉链表存储结构,用类C语言编写统计一棵二叉树t 中元素值等于e的结点个数的算法。
石家庄经济学院
/2 学年第学期
数据结构卷参考答案及评分标准一、选择题(每题2分,共20分)
1~5: C B C A C 6~10: D A C B C
评分标准:每题选对2分,错选,漏选均不得分。
二、填空题(每题1分,共10分)
1. 顺序存储结构
2. O(1)
3. 5
4. 值域
5. 5
6.n-1
7. 树形结构
8. (c,d)
9.最大值
10. n-1
评分标准:每题填对1分,错填,漏填均不得分。
三、综合题(共50分)
1. Huffman树如下图:
分)
WPL=(3+5)*3+(6+9+13)*2=80 (2分) 按左0右1,进行编码。 结点6的编码 00 结点3的编码 010 结点5的编码 011 结点9的编码 10
结点13的编码 11 (4分)
2. 希尔排序(增量为5,3,1)的前2趟排序结果: 第1趟结果:49 55 4 13 27 65 97 76 (3分) 第2趟结果:13 27 4 49 55 65 97 76 (3分)
3. (1
(6分)
(2)该二叉树后序序列:
EIJFBGHDA (2分) 4.
(7分)
哈希表如下:
(1分)ASL=(5*1+2+3)/7=1.43 (2分)
5.
评分标准:(b)到(d),每步2分。
6. 首先分析出程序段的基本操作是m++ ,然后计算出基本操作的重复执行次数为:n+n+n+……+n= n2. (4分)
所以,时间复杂度为:O(n2) (2分)
四、算法设计题(每题10分,共20分)
1. 用类C语言编写在带头结点的单链表L中删除第i个元素。
Status ListDelete_L(LinkList &L,int i,ElemType e){
//在带头结点的单链表L中删除第i个元素,并由e返回其值
p=L;j=0;//初始化,p指向第一个结点,j为计数器
while(p->next&&j p=p->next,j++;} (5分) if(!(p->next)||j>i-1)return ERROR;//删除位置不合理 q=p->next; p->next=q->next; e=q->data; free(q) //删除并释放结点 return OK; (5分) }// ListDelete_L 2. 二叉树采用二叉链表存储结构,用类C语言编写统计一棵二叉树t 中元素值等于e的结点个数的算法。 typedef struct btnode * bitreptr; struct btnode { datatype data; bitreptr lchild, rchild; } void countleaf(bitreptr t, int &count) { if(t!=null) { if(t→ data= =e) count++; //count的初值设为0 (4分) countleaf(t→lchild, count); (3分) countleaf(t→rchild, count); (3分) } }