华中农业大学《数据结构》2018-2019学年期末试卷.docxVIP

  • 1
  • 0
  • 约5.69千字
  • 约 9页
  • 2026-01-21 发布于江西
  • 举报

华中农业大学《数据结构》2018-2019学年期末试卷.docx

华中农业大学期末考试试卷(A卷)

装订线

2018-2019学年第2学期

考试科目:数据结构

考试类型:(闭卷)考试

考试时间:

120

分钟

学号

姓名

年级专业

考生须知:

1.

答案必须写在“答卷”上,写在试卷上不得分;

2.

考试结束时,只回收答卷,不回收试卷;

3.

必须在答卷上正确填写班级、学号、姓名等内容,否则没有考试成绩。

得分

题号

总分

得分

评阅人

一、选择题(本大题共10小题,每小题2分,共20分)

1、在一个长度为n(n1)的单链表上,设有头和尾两个指针,执行(

)操作与链表的长

度有关。

A.删除单链表中的第一个元素

B.删除单链表中的最后一个元素

C.在单链表第一个元素前插入一个新元素

D.在单链表最后一个元素后插入一个新元素

2、单链表中,增加一个头结点的目的是为了(

)。

A.使单链表至少有一个结点

B.标识表结点中首结点的位置

C.方面运算的实现

D.说明单链表是线性表的链式存储

3、若栈采用顺序存储方式存储,现两栈共享空间V[1…m],top[1]、top[2]分别代表第1和

第2个栈的栈顶,栈1的底在V[1],栈2的底在V[m],则栈满的条件是(

)。

D.top[1]=top[2]

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

4、数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA

开始连续存放的存储器内,该数组按行存放,元素A[8][5]的起始地址为(

)。

A.SA+141

B.SA+144

C.SA+222

D.SA+225

5、已知一算术表达式的中缀形式为A+B*C–D/E,后缀形式为ABC*+DE/–,其前缀形式

为(

)。

A.–A+B*C/DE

B.–A+B*CD/E

C.–+*ABC/DE

D.–+A*BC/DE

6、设某哈夫曼树中有199个结点,则该哈夫曼树中有(

)个叶子结点。

A.99

B.100

C.101

D.

102

7、设有序表中有1000个元素,则用二分查找查找元素X最多需要比较(

)次。

A.25

B.10

C.7

D.1

1

8、设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列( )方法可以达到此目的。

A.快速排序 B.堆排序 C.归并排序 D.直接插入排序9、设某棵二叉树中有2000个结点,则该二叉树的最小高度为( )。

A.9 B.10 C.11 D.12

10、在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是( )。

A.希尔排序 B.冒泡排序 C.直接插入排序 D.直接选择排序

得分

二、应用题(本大题共5小题,每小题6分,共30分,要求写出解题过程)

1、已知待排序的序列为(75,87,45,61,30,5,100,55,40,80),对序列进行正 序排序,请写出初始堆序列和第一趟、第二趟堆排序的序列(写出序列)。

2、有一份电文中共使用6个字符:a、b、c、d、e、f,它们的出现次数依次为10,20,15,32,40,60。试画出对应的哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造),并求出每个字符的哈夫曼编码。

3、输入一个正整数序列(70,15,33,40,88,90,45,56),试按次序构造一棵平衡二叉树, 画出每一次进行平衡化处理的过程并加以简要说明。

4、已知有下列的哈希表:

选择哈希函数H(key)=(3key+7)modm(m=13),用开放地址法的线性探测再散

列解决冲突,问:在表中对关键字50和36进行查找时,所需进行的比较次数为多少?

依次写出每次计算的公式和值。

5、简单描述求图最小生成树的Kruskal算法(克鲁斯卡尔算法)的基本思想,并按步骤给

出下图的最小生成树的求解过程。

2

得分

三、程序填空题(本大题共5小题,共15个空白处,每空2分,共30分,注意:每空只填一个语句)

1、堆排序

堆采用顺序表存储表示

voidHeapAdjust(HeapTypeH,ints,intm)//

{//已知H.r[s..m]中记录的关键字除H.r[s].key之外均满足堆的定义,本函数 //调整H.r[s]的关键字,使H.r[s..m]成为一个大顶堆(对其中记录的关键字而言) RedTyperc;

intj;

rc=H.r[s];

for(j=2*s;j=m;j*=2)

{//沿key较大的孩子结点向下筛选

if(jmLT(H.r[j].key,H.r[j+1].key))

线

++j;//j为key较大的记录的下标

if(!LT(rc.key,H.r[j].key))

break;//rc应插入在

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档