算法与数据结构试卷B
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法与数据结构模拟考试卷B
一、单选题(每题1分,共10分)
1.下面关于线性表的叙述错误的是()。
(A)线性表采用顺序存储必须占用一片连续的存储空间
(B)线性表采用链式存储不必占用一片连续的存储空间
(C)线性表采用链式存储便于插入和删除操作的实现
(D)线性表采用顺序存储便于插入和删除操作的实现
2.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在
676(10),每个元素占一个空间,问A[3][3](10)存放在()位置。脚注(10)表示用10进制表示。
(A)688(B)678(C)692(D)696
3.栈和队列的共同特点是()。
(A)只允许在端点处插入和删除元素(B)都是先进后出
(C)都是先进先出(D)没有共同点
4.数据的最小单位是()。
(A)数据元素(B)数据项(C)数据类型(D)数据变量
5.函数substr(“DATASTRUCTURE”,5,9)的返回值为()。
(A)“STRUCTURE”(B)“DATA”
(C)“ASTRUCTURE”(D)“DATASTRUCTURE”
6.设有一组初始记录关键字序列为(34,76,45,18,26,54,92),则由这组记
录关键字生成的二叉排序树的深度为()。
(A)6(B)5(C)4(D)7
7.表头和表尾均为空表的广义表是()。
(A)()(B)(())(C)((()))(D)((),())
8.如图所示有向图的一个拓扑序列是()。
(A)ABCDEF(B)FCBEAD(C)FEDCBA(D)
DAEBCF
9.设完全无向图中有n个顶点,则该完全无向图中有()条边。
(A)n(n-1)/2(B)n(n-1)(C)n(n+1)/2(D)(n-1)/2
10.判定一个循环队列Q(最多元素为m)为满队列的条件是()。
(A)Q->front==Q->rear(B)Q->front!=Q->rear
(C)Q->front==(Q->rear+1)%m(D)Q->front!=(Q->rear+1)%m
二、填空题(每空1分,共5分)
1.两个串是相等的,当且仅当两个串的长度相等且________的字符都相同。
2.在无向图G的邻接矩阵A中,若A[i][j]等于0,则A[j][i]等于________。
3.对矩阵进行压缩是为了_______________________。
4.设输入序列为1、2、3,则经过栈的作用后可以得到___________种不同的输出
序列。
5.循环队列的引入,目的是为了克服______________。
三、判断题(每题1分,共5分)
1.中序遍历一棵二叉排序树可以得到一个有序的序列。
()
2.如果两个关键字的值不等但哈希函数值相等,则称这两个关键字为同义词。()
3.有向图的邻接表和逆邻接表中表结点的个数不一定相等。
()
4.所谓取广义表的表尾就是返回广义表中最后一个元素。
()
5.满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
()
四、应用题(本大题共6小题,共60分)
1、已知一棵二叉树的前序遍历的结果是AEFBGCDHIKJ,中序遍历的结果是EFAGBCHKIJD,试画出这棵二叉树,并给出这棵二叉树的后序遍历序列。
2、已知有十个待排序的记录,其关键字分别为:256,301,751,129,937,863,742,694,076,438,给出用快速排序法进行从小到大排序的过程。
3、假设通信电文使用的字符集为{a,b,c,d,e,f,g,h},各字符在电文中出现的频度分别为:7,26,2,28,13,10,3,11,试为这8个字符设计哈夫曼编码。要求:
(1).画出你所构造的哈夫曼树(要求树中左孩子结点的权值不大于右孩子结点的权值);
(2).按左分支为0和右分支为1的规则,分别写出与每个字符对应的编码。
4、设无向网G如下:
(1).请列出网G的邻接矩阵、画出网G的邻接表结构。
(2).写出从顶点1出发,按“深度优先搜索”和“广度优先搜索”方法遍历网G所得到的顶点序列;。
(3).按Prim算法求出网G的一棵最小生成树。
5、假定采用H(key)=key%13计算散列地址,引用线性探测的开放定址法解决冲突,试在0~12的散列地址空间中,对关键字序列(12,23,45,57,20,03,78,31,15,36)构造散列表,并求出等概率情况下查找成功的平均查找长度。
6、画出与下图所示森林对应的二叉树。
五、算法题(本大题共2小题,共20分)
1、给出冒泡排序算法思路,并简单写出冒泡排序算法。
2、分析下列程序段的执行过程,并写出程序段的输出结果(栈的元素类型QElem Type为char)。
void main(){
Queue Q;InitQueue(Q);
char x=’e’,y=’c’;
EnQueue(Q,’h’);EnQueue(Q,’r’);EnQueue(Q,y);
DeQueue(Q,x);EnQueue(Q,x);
DeQueue(Q,x);EnQueue(Q,’a’);
While(!QueueEmpty(Q)){DeQueue(Q,y);
Printf(y);}
Printf(x)
}