数据结构期末考试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、判断题:(共10分,每题1分)
1. 顺序表和一维数组一样,都可以按下标随机(或直接)访问。()
2. 数据的逻辑结构是指各数据元素之间的逻辑关系,是用户根据应用需要建立的。()
3. 只有用面向对象的计算机语言才能描述数据结构算法。()
4. 在对双向循环链表做删除一个结点操作时,应先将被删除结点的前驱结点和后继结点链
接好再执行删除结点操作。()
5. 递归的算法简单、易懂、容易编写,而且执行效率也高。()
6. 在AOE网络中一定只有一条关键路径。()
7. 二叉树是一棵无序树。()
8. 在任何情况下,快速排序需要进行关键码比较的次数都是O(nlog2n)。()
9. 图的深度优先搜索是一种典型的回溯搜索的例子,可以通过递归算法求解。()
10. 当从一个最小堆中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把
它逐层向下调整,直到调整到合适位置为止。()
二、填空题(20分,每题2分)
1.假定一棵二叉树的结点个数为32,则它的最小深度为______。
2.在一棵二叉树中,度为2的结点有5个,度为1的结点有6个,那么叶子结点有______
个。
3.一棵深度为5的满二叉树的结点总数为______个。
4.假定一棵树的广义表表示为A(B(C, D(E, F,G), H(I, J))),则结点H的双亲结点为
______。
5.对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为______。
6.若要对某二叉排序树进行遍历,保证输出元素的值序列按增序排列,应对该二叉排
序树采用____________遍历法。
7.元素关键字转换为该元素存储位置的函数f称为____________。
8.每次从无序表中取出一个元素,把它插入到有序表中的适当位置,此种排序方法叫
做____________排序。
9.假定一组数据的关键字为{46,79,56,38,40,84},则利用堆排序方法建立的初始大
顶堆为__________________。
10.对20个记录进行归并排序时,共需要进行______趟归并。
三、选择题(共20分,每题2分)
1.树中所有结点的度数之和等于结点总数加______。
A. 0
B. 1
C. -1
D. 2
2.在一棵树中,每个结点最多有______个直接前驱结点。
A. 0
B. 1
C. 2
D. 任意多个
3.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加______。
A. 2
B. 1
C. 0
D. -1
4.顶点个数为n的无向图最多有______条边。
A. n-1
B. n(n-1)/2
C. n(n+1)/2
D. n(n-1)
5.n个顶点的连通图至少有______条边。
A. n-1
B. n
C. n+1
D. 0
6.在一个无向图中,所有顶点的度数之和等于所有边数的______倍。
A. 3
B. 2
C. 1
D. 1/2
7.对于顺序存储的有序表(5, 12, 20, 26, 37, 42, 46, 50, 64),为查找元素26,若采
用顺序查找,需要比较______次才能查找成功。
A. 3
B. 4
C. 5
D. 6
班
级
:
专
业
:
姓
密
封
8.设哈希表长为14,哈希函数f(k)=k%11,已知表中已有4个元素,关键字分别为15,
38,61,84,存储位置分别为4,5,6,7,其它存储位置为空,如用二次探测再散列处理冲突,关键字为49的存储位置是______。
A. 8
B. 3
C. 5
D. 9
9.在对n个元素进行简单选择排序的过程中,需要进行______趟选择和交换。
A. n/2
B. n-1
C. n
D. n+1
10.在对n个元素进行快速排序的过程中,第一趟排序最多需要交换______对元素。
A. n/2
B. n-1
C. n
D. n+1
四、应用题(共30分,每题6分)
1.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,…,n k个度为k
的结点,问该树有多少个叶子结点?(6分)
2.对于下面两个图,求出:
(1)无向图中每个顶点的度,有向图中每个顶点的入度,出度和度。(2)是否是连通图/强连通图,如果不是,画出连通分量/强连通分量。(6分)
3.分别画出在线性表(a, b, c, d, e, f, g)中进行折半查找,以查关键字等于e、f
和g的过程。(6分)
4.已知一组元素的关键字{46,74,16,53,14,26,40,38,86,65,27,34},利用直接插入
排序法,写出每次向前面的有序表插入一个元素后的排列结果。(6分)
5、将下图转换为二叉树,对转换后的二叉树进行先序、中序、后序遍历序列。(6分)
五、程序题(20分)
1.将下面算法填完整。(10分,每空2分)
int Search_Bin(SSTable ST, KeyType key){
//在有序表ST中折半查找其关键字等于key的数据元素,若找到,则返回该元素//在表中的位置,否则返回0
low=1;high=ST.length;
while(low<=high){
mid=____________;
if(EQ(key, ST.elem[mid].key)) return ____________;
else if(LT(key, ST.elem[mid].key)) high=____________;
else low=____________;
}
return ____________;
}
2.将下面算法填完整。(10分,每空2分)
void InsertSort(SqList &L){
//对顺序表L作直接插入排序
for(i=2;i<=L.length;++i)
if(LT(L.r[i].key, L.r[i-1].key)){
L.r[0]= ____________;
L.r[i]= ____________;
for(j=____________;LT(L.r[0].key, L.r[j].key);--j)
L.r[j+1]= ____________;
L.r[j+1]= ____________;
}
}