广东海洋大学数据结构期末模拟试题两套含答案考试必出Word文档格式.docx
《广东海洋大学数据结构期末模拟试题两套含答案考试必出Word文档格式.docx》由会员分享,可在线阅读,更多相关《广东海洋大学数据结构期末模拟试题两套含答案考试必出Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
7.n个元素的顺序查找(检索)的平均查找长度为(n+1)/2。
三、单选题(本题的每一备选答案中,只有一个是正确的,请把你认为正确的答案填入括号内,多选不给分,每小题3分,共15分)
1.若进栈序列为1,2,3,4,则不可能得到的出栈序列是(C)。
A)3,2,1,4B)3,2,4,1
C)4,2,3,1D)2,3,4,1
2.对于图1所示的二叉树,其后序序列为(C)。
A)ABDECFGB)DBEAFCG
C)DEBFGCAD)GFCEBDA
3.对于图2所示的AOV网,不能出现的拓扑序列为(A)。
A)12345B)12435
C)24135D)21435
图1图2
4.深度为k的完全二叉树所含叶结点的个数最多为(B)。
A)2kB)2k-1C)kD)2k
5.衡量查找算法效率的主要标准是(C)。
A)元素个数B)所需的存储量
C)平均查找长度D)算法难易程度
四、应用题(25分)
1.给定B树如图3所示,画出将14插入到B树后的情形。
(3分)
图3
2.对图4进行如下操作:
(1)写出其邻接矩阵。
(2分)
(2)按Kruskal算法求其最小生成树,并写出相应的边集数组
图4
|012∞5∞∞|
|1208∞10∞|
|∞80∞∞3|
|5∞∞06∞|
|∞10∞6011|
|∞∞3∞110|
3.请画出后序序列和中序序列相同的二叉树的所有形态。
(3分)
1:
只有左子树
2:
一个结点
3:
空树
4.散列函数为H(k)=k%7,散列表的地址为0~6,用线性探查法解决冲突,建立散列表ht。
给定关键字序列为{32,13,49,55,22,38,21}。
要求:
(1)构造散列表(只画出表,不写算法)。
(5分)
位置:
0123456
关键字:
49552238322113
比较次数:
1321161
(2)求出平均查找长度。
WPL=(1+3+2+1+1+6+1)/7=15/7
5.用直接选择排序法对下列关键字进行排序,请写出每一趟排序的结果。
(6分)
68452090151050
第一趟:
10452090156850
第二趟:
10152090456850
第三趟:
第四趟:
10152045906850
第五趟:
10152045506890
第六趟:
五、算法设计(在下列算法的横线上填上适当的表达式、语句或运算符。
每空3分,共30分)
1.在带头结点的head单链表的结点a之后插入新元素x。
classnode
{public:
elemtypedata;
node*next;
};
voidlkinsert(node*head,elemtypex)
{node*s,*p;
s=_newnode;
________
s->
data=__x;
_______;
p=head->
next;
while(p!
=NULL)&
&
(p->
data!
=a)
__p=p-〉next_______;
if(p==NULL)
cout<
<
"
不存在结点a"
;
else{___s->
next=p->
next______;
___p->
next=s______;
}
2.快速排序
voidqksort(intR[],intp,intq)//按递<
对R[p]~R[q]进行快速排序
{inti=p,j=q;
R[0]=R[i];
//R[0]作临时单元
while(__i<
j__)
{
while(j>
i)&
(R[j]_=>
___R[0])j--;
if(j>
i)
{R[i]=R[j];
i++;
while(i<
j)&
(R[i]__<
=__R[0])i++;
if(i<
j){R[j]=R[i];
j--;
}
R[i]=___R[0]______;
i++;
j--;
if(j>
p)qksort(R,p,j);
if(i<
q)qksort(R,i,q)___;
模拟试题三
()1.数据是计算机加工处理的对象。
()2.数据结构的概念包括数据的逻辑结构、数据在计算机中的存储方式和数据的运算三个方面。
()3.线性表是由n≥0个相同类型元素组成的有限序列。
()4.栈是一种后进先出的线性表。
()5.从循环链表的某一结点出发,只能找到它的后继结点,不能找到它的前驱结点。
()6.单链表设置头结点的目的是为了简化运算。
()7.深度为h(空二叉树的深度为0)的二叉树,最多有2h-1个结点。
()8.图G由两个集合V(G)和E(G)所组成,其中顶点集V(G)可以为空集,而边集E(G)不能为空。
()9.散列法是一种对关键字进行运算的查找方法和存储方法。
()10.快速排序在任何情况下都是速度最快的一种排序方法。
1.数据元素之间存在的相互关系称为。
2.数据结构从逻辑上分为结构和结构。
3.线性表的顺序存储结构称为。
4.所有插入在表的一端进行,而所有删除在表的另一端进行的线性表称为。
5.深度为h(空二叉树的深度为0)的二叉树,最少有个结点。
6.折半查找要求待查表为表。
7.n个记录按其关键字大小递增或递减的次序排列起来的过程称为。
8.用链表存储数据时,不仅要存储数据元素的,还要存储元素之间的相互。
1.与线性表的链接存储相符的特性是()。
A)插入和删除操作灵活B)需要连续存储空间
C)便于随机访问D)存储密度大
2.若进队序列为1,2,3,4,则出队序列是()。
A)4,3,2,1B)1,2,3,4
C)1,3,2,4D)3,2,4,1
3.已知广义表A=((a,b),(c,d)),则head(A)等于()。
A)(a,b)B)((a,b))C)a,bD)a
4.n个结点的二叉树,若用二叉链表作为存储结构,则非空闲的左、右孩子链域为()。
A)nB)2nC)n-1D)n+1
5.6个顶点的连通图的深度优先生成树,其边数为()。
A)6B)5C)7D)4
四、应用题(共25分)
1.给定B树如下,画出将19插入到B树后的情形。
(4分)
2.对于给定的5个实数W={8,5,13,2,6},试构造Huffman树,并求出该树的最小带权路径长度。
(7分)
3.对于下面所给的图,进行如下操作:
(1)画出其邻接表。
(2)写出从V1出发的深度优先搜索序列。
4.给定有序表D={15,17,18,22,35,51,60,88,93},用折半查找法在D中查找18。
现要求:
(1)试用图示法表示查找过程。
(2)求出其成功的平均查找长度ASL。
五、算法设计(在下列算法的横线上填上适当的语句或表达式。
1.直接选择排序
voidselectsort(intR[],intn)
//按递增序对R[0]~R[n-1]进行直接选择排序
{inti,j,k,temp;
for(i=0;
i<
=;
i++)
{k=i;
for(j=;
j<
=n-1;
j++)
if(R[j]R[k])
k=j;
if()
{temp=R[i];
R[i]=;
R[k]=temp;
2.中序遍历二叉树。
设二叉树用二叉链表表示,以t为根指针,二叉链表结点的类型为node;
栈s的元素类型为指向node的指针类型,栈容量m足够大。
中序遍历的非递归算法如下:
structnode
{chardata;
node*lc,*rc;
voidpreorder(node*t)
{node*s[m],*p=t;
inttop=-1;
//置栈空
do
{while(p!
=NULL)
{s[++top]=;
;
if(top!
=-1)
{p=s[top--];
;
}
}while(()||(p!
=NULL));