2016年数据结构与算法分析习题及参考答案.pdf
《2016年数据结构与算法分析习题及参考答案.pdf》由会员分享,可在线阅读,更多相关《2016年数据结构与算法分析习题及参考答案.pdf(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、四川大学计算机学院 数据结构与算法分析课程模拟试卷及参考答案模拟试卷一一、单 选 题(每 题 2分,共 2 0 分)1 .以下数据结构中哪一个是线性结构?()A.有向图 B.队列 C.线索二叉树 D.B树2 .在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下()语句序列。A.p=q;p-n ex t=q;B.p-n ex t=q;q-n ex t=p;C.p-n ex t=q-n ex t;p=q;D.q-n ex t=p-n ex t;p-n ex t=q;3.以下哪一个不是队列的基本运算?()A.在队列第i 个元素之后插入一个元素 B.从队头删除一个元
2、素C.判断一个队列是否为空 D.读取队头元素的值4 .字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串?A.1 4 B.5 C.6 D.85 .山权值分别为3,8,6,2 的叶子生成一棵哈夫曼树,它的带权路径长度为()。A.1 1 B.35 C.1 9以下6-8 题基于图l o6 .该二叉树结点的前序遍历的序列为()。A.E、G、F、A、C、D、BB.E、A、G、C、F、B、DC.E、A、C、B、D、G、FD.E、G、A、C D、F、B7.该二叉树结点的中序遍历的序列为()。A.A、B、C、D、E、G、FB.E、A、G、C、F、B、DC.E A、C
3、、B D、G、FE.D、C、A、F、G、E图 18 .该二叉树的按层遍历的序列为()。A.E、G、F、A、C D、BC.E、A、G、C、F、B、DB.E、A、C、B D G FD.E、G、A、C、I)、F、B9 .下面关于图的存储的叙述中正确的是()oA.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C.用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关1 0 .设有关键码序列(q,g,m,z,a,n,p,x,h),
4、下面哪一个序列是从上述序列出发建堆的结果?()A.a,g,h,m,n,p,q,x,z B.a,g,m,h,q,n,p,x,zC.g,m,q,a,n,p,x,h,z D.h,g,m,p,a,n,q,x,z二、填 空 题(每 空1分,共26分)1 .数据的物理结构被分为_ _、_ _、_ _和 四种。2 .对于一个长度为n的顺序存储的线性表,在表头插入元素的时间复杂度为,在 表 尾 插 入 元 素 的 时 间 复 杂 度 为。3.向一个由HS指向的链栈中插入一个结点时p时,需要执行的操作是;删除一个结点时,需要执行的操作是(假设栈不空而且无需回收被删除结点)。4 .对于一棵具有n个结点的二叉树,一
5、个结点的编号为i(l i W n),若它有左孩子则左孩子 结 点 的 编 号 为,若它有右孩子,则 右 孩 子 结 点 的 编 号 为,若它有双亲,则双亲结点的编号为 o5 .当向一个大根堆插入一个具有最大值的元素时,需要逐层 调整,直到被调整到_位置为止。6 .以二分查找方法从长度为10的有序表中查找一个元素时,平 均 查 找 长 度 为。7 .表 示 图 的 三 种 常 用 的 存 储 结 构 为、和8.对于线 性 表(7 0,3 4,5 5,2 3,65,4 1,2 0)进行散列存储时,若选用H (K)=K%7作为散列函数,则散列地址为0 的元素有 个,散列地址为6的有 个。9.在归并排
6、序中,进 行 每 趟 归 并 的 时 间 复 杂 度 为,整个排序过程的时间复杂度为,空间复杂度为。10.在一棵m阶B/对匕每个非树根结点的关键字数目最少为 个,最多为个,其 子 树 数 目 最 少 为,最多为三、运 算 题(每 题6分,共24分)I .写出下列中缀表达式的后缀形式:(1)3 X/(Y-2)+l(2)2+X*(Y+3)2 .试对图2中的二叉树画出其:(1)顺序存储表示的示意图;(2)二叉链表存储表示的示意图。3 .判断以下序列是否是小根堆?如果不是,将它调整为小根堆。(1)12,7 0,3 3,6 5,2 4,5 6,4 8,92,86,3 3 (2)05,2 3,2 0,2
7、8,4 0,3 8,2 9,6 1,3 5,7 6,4 7,100 4 .已知一个图的顶点集V和边集E分别为:V=1,2,3,4,5,6,7);E=(1,2)3,(1,3)5,(1,4)8,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)2 0,(5,6)18,(6,7)2 5 ;按照普里姆算法从顶点1 出发得到最小生成树,试写出在最小生成树中依次得到的各条边。四、阅读算法(每题7 分,共 14分)1.void AE(Stack&S)I n i tSta c k(S);P ush(S,3);P ush(S,4);i n t x二 P o p(S)+
8、2*P o p(S);P ush(S,x);i n t i,a 5 =l,5,8,12,15);f o r(i=0;i left,cl,c2);c l+;if(BT-left=NULL&BT-right=NULL)c2+;ABC(BT-right,c l,c2);/if)该函数执行的功能是什么?五、算法 填 空(共 8 分)向单链表的末尾添加一个元素的算法。V o i d I n se rtR e a r(L N o d e*&H L,c o n st E l e m T y p e&i te m)(L N o d e*n e wp tr;n e wp tr=n e w L N o d e;I
9、 f ()(c e rr,zM e m o ry a l l o c a ti o n f a i l a re!e n d l;e xi t(1);)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _=i te m;n e wp tr-n e xt=N U L L;i f (H L 二 二 N U L L)HL=;e l se L N o d e*P=H L;W hi l e (P-n e xt!=N U L L)p-n e xt=n e wp tr;)六、编写算法(共 8 分)编写从类型为L i st的线性表L中将第i 个元素删除的算法,(假
10、定不需要对i 的值进行有效性检查,也不用判别L 是否为空表。)vo i d De l e te(L i st&L,i n t i)模拟试卷一 参考答案单选题(每题2 分,共 2 0 分)l.B 2.D 3.A 4.B 5.B 6.C 7.A 8.C 9.B 10.B二、填 空 题(每 空 1 分,共 2 6 分)1 .顺 序 链 表 索 引 散 列2.0(n)0(1)3.p-n e xt=H S;H S=p H S=H S-n e xt4.2 i 2 i+l L i/2(或 i/2)5.向上根6.2.97.邻 接 矩 阵 邻 接 表 边 集 数 组8.1 49.0(n)0(nlog2n)0(n
11、)10.m/2 L l m-1 1m/2 1 m三、运算题(每题6 分,共 2 4 分)1.(1)3 X *Y 2 -/I +(2)2 X Y 3 +*+图 39 10 11 12 13 14 15 162.(1)012345678123456789(2)见图3 所示:3 .不是小根堆。调 整 为:12,6 5,3 3,7 0,2 4,5 6,4 8,9 2,8 6,3 3(2)是小根堆。4 .普里姆算法从顶点I 出发得到最小生成树为:(1,2)3,(1,3)5,(1,4)8,(4,6)4,(2,5)10,(4,7)2 0四、阅读算法(每题7 分,共 1 4 分)1.3 0 2 4 16 10
12、 2 102.该函数的功能是:统计出B T所指向的二叉树的结点总数和叶子总数五、算法 填 空(共 8 分,每一空2 分)ne w ptr=N U L L ne w ptr-=d a ta ne w ptr p=p-ne x t六、编写 算 法(8 分)voi d D e le te(L i st&L,i nt i)(f or(i nt j=i-l;j ne x t=H L;B.p-ne x t=H L-ne x t;H L-ne x t=p;C.p-ne x t=H L;p=H L;D.p-ne x t=H L;H L=p;2 .若顺序存储的循环队列的Q ue ue M a x S i ze=
13、n,则该队列最多可存储()个元素.A.n B.n-1C.n+1 D.不确定3 .下述哪一条是顺序存储方式的优点?()A.存储密度大 B.插入和删除运算方便C.获取符合某种条件的元素方便 D.查找运算速度快4 .设有一个二维数组Amn,假 设 A 存放位 置 在 6 00(助,4 3 3 存放位置在6 7 8(助,每个元素占一个空间,问*2 3(助存放在什么位置?(脚注(表示用10进制表示,m 3)A.6 5 8 B.6 4 8 C.6 3 3 D.6 5 35 .下列关于二叉树遍历的叙述中,正确的是()。A.若一个树叶是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序遍历最后一个结点B
14、.若一个点是某二叉树的前序遍历最后一个结点,则它必是该二叉树的中序遍历的最后一个结点C.若一个结点是某二叉树的中序遍历的最后一个结点,则它必是该二叉树的前序最后一个结点D.若一个树叶是某二叉树的前序最后一个结点,则它必是该二叉树的中序遍历最后一个结点6 .k 层二叉树的结点总数最多为().A.2-1 B.2 K+1 C.2 K-1 D.7 .对线性表进行二分法查找,其前提条件是().A.线性表以链接方式存储,并且按关键码值排好序B.线性表以顺序方式存储,并且按关键码值的检索频率排好序C.线性表以顺序方式存储,并且按关键码值排好序D.线性表以链接方式存储,并且按关键码值的检索频率排好序8.对 n
15、个记录进行堆排序,所需要的辅助存储空间为A.0(l o g2n)B.0(n)C.0(1)D.0(n 2)9.对于线性表(7,34,7 7,2 5,64,49,2 0,14)进行散列存储时,若 选 用 H(K)=K%7 作为散列函数,则散列地址为0 的元素有()个,A.1 B.2C.3D.410.下列关于数据结构的叙述中,正确的是().A.数组是不同类型值的集合B,递归算法的程序结构比迭代算法的程序结构更为精炼C.树是一种线性结构D.用一维数组存储一棵完全二叉树是有效的存储方法二、填 空 题(每 空 1 分,共 26分)1.数 据 的 逻 辑 结 构 被 分 为、和 四种。2 .一个算法的时间复
16、杂度为(37+2 000”l o g 2+90)/2,其 数 量 级 表 示 为。3.对于一个长度为n的单链存储的队列,在 表 头 插 入 元 素 的 时 间 复 杂 度 为,在表 尾 插 入 元 素 的 时 间 复 杂 度 为。4.假定一棵树的广义表表示为A(D(E,G),H(L J),则树中所含的结点数为个,树的深度为,树的度为。5.后缀算式7 9 2 30+-4 2 /*的值为。中缀算式(3+X*Y)-2 Y/3对应的后缀算式为 o6.在一棵高度为5 的理想平衡树中,最少含有 个结点,最多含有 个结点。7 .在树中,一个结 点 的 直 接 后 继 结 点 称 为 该 结 点 的。一个结点
17、的直接前趋结点称为该结点的。8.在一个具有10个顶点的无向完全图中,包含有 条边,在一个具有n个顶点的有向完全图中,包含有 条边。9.假定一个线性表为(12,17,7 4,5,63,49,82,36),若按Ke y%4 条件进行划分,使得同一余数的元素成为一个子表,则得到的四个子表分别为、和O10.对一棵B _ 树进行删除元素的过程中,若最终引起树根结点的合并时,会使新树的高度比原树的高度。11.在堆排序的过程中,对 任 一 分 支 结 点 进 行 筛 运 算 的 时 间 复 杂 度 为,整个堆排序过 程 的 时 间 复 杂 度 为。12.在线性表的散列存储中,装填因子a 又称为装填系数,若用
18、m表示散列表的长度,n 表示待散列存储的元素的个数,则a 等于。三、运 算 题(每 题 6 分,共 24分)1.在如下数组A 中链接存储了一个线性表,表头指针存放在A 0.n e x t,试写出该线性表。A 0 1 2 3 4 5 6 760507 890344040527132 .已知棵二叉树的前序遍历的结果是AB KC D F G HIJ,中序遍历的结果是KB C D AF HIG J,试画出这棵二叉树。3.已知一个图的顶点集V为:V=1,2,3 4 5,6,7;其共有1 0 条边。该图用如下边集数组存储:122552261364547677751122233457试用克鲁斯卡尔算法依次求
19、出该图的最小生成树中所得到的各条边及权值。4 .画出向小根堆中加入数据4,2,5,8,3,6,1 0,1 时,每加入一个数据后堆的变化。四、阅读算法(每题7 分,共 14分)1 .在下面的每个程序段中,假定线性表L a 的类型为L is t,元素类型E lemTyp e为 int,并假定每个程序段是连续执行的。试写出每个程序段执行后所得到的线性表L a。(1)I nit L is t(L a);I nt a =1 0 0,2 6,5 7,3 4,7 9;F or (i=0;i5;i+)I ns er t(L a,a i);Tr a v er s eL is t(L a);(2)Delet eF
20、 r ont(L a);I ns er t R ea r(L a,Delet eF r ont(L a);Tr a v er s eL is t(L a);(3)C lea r L is t(L a);F or (i=0;idata,ABC(BT-left);ABC(BT-right);五、算法填空(共8 分)二分查找的递归算法。I nt B ins ch(E lemTyp e A ,int low,int hig h,K eyTyp e K)(ifint mid=(low+hig h)/2;if ()r et u r n mid;查找成功,返回元素的下标els e if (K A mid.k
21、ey)r et u r n B ins ch(A,low,mid-1,K);在左子表上继续查找els e return;/在右子表上继续查找)els e;查找失败,返回T)六、编写 算 法(共 8 分)H L为单链表的表头指针,试写出在该单链表中查找具有给定的元素item的算法。bool Find(LNode*HL,ElemType&item)模拟试卷二参考答案一、单选题(每题2 分,共 20分)l.B 2.B 3.A 4.C 5.D 6.A 7.C 8.C 9.D 10.D二、填 空 题(每 空 1 分,共 26分)1.集 合 结 构 线 性 结 构 树 结 构 图 结 构2.0(n)3.0
22、(1)0(1)4.7 2 25.9 4 3 XY*+2Y*3/-6.1 6 3 17.孩子(或子)结点 双亲(或父)结点8.4 5 n(n-1)9.(1 2,3 6)(1 7,5,4 9)(7 4,8 2)(6 3)1 0.减 少1 (或减少)1 1.0(log2n)0(nlog2n)1 2.n/m三、运算题(每题6 分,共 24分)1 .线性表为:(9 0,4 0,7 8,5 0,3 4,6 0)2 .当前序序列为A B K C D F G H I J,中序序列为K B C D A F H I G J时,逐步形成二叉树的过程(1,6)1,(2,4)1,(2,5)2,(5,7)2,(2,6)3
23、,(3,5)74 .见图5 o图5四、阅读算法(每题7 分,共 14分)1 .(l)L a=(2 6,3 4,5 7,7 9,1 0 0)L a=(5 7,7 9,1 0 0,3 4)(3)L a=(7 9,3 4,5 7,2 6,1 0 0)2 .前序遍历链式存储的二叉树。五、算法填空(每空2 分,共 8 分)(low da t a=it em)r et u r n t r u e;els e p=p-next;r et u r n f a ls e;模拟试卷三一、单 选 题(每 题 2 分,共 20分)1 .对一个算法的评价,不包括如下()方面的内容。A.健壮性和可读性 B.并行性 C.正
24、确性 D.忖空复杂度2 .在带有头结点的单链表HL中,要向表头插入一个由指针p 指向的结点,则执行()。A.p-next=H L-next;H L-next=p;B.p-next=H L;H L=p;C.p-next=H L;p=H L;D.H L=p;p-next=H L;3 .对线性表,在下列哪种情况下应当采用链表表示?()A.经常需要随机地存取元素 B.经常需要进行插入和删除操作C.表中元素需要占据一片连续的存储空间 D.表中元素的个数不变4 .一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是()A.23 1 B.3 2 1C.3 1 2 D.1 235 .AOV网是
25、一 种()A.有向图 B.无向图 C.无向无环图 D.有向无环图6 .采用开放定址法处理散列表的冲突时,其平均查找长度()。A.低于链接法处理冲突 B.高于链接法处理冲突C.与链接法处理冲突相同 D.高于二分查找7 .若需要利用形参直接访问实参时,应将形参变量说明为()参数。A.值 B.函数 C.指针 D.引用8.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。A.行号 B.列号 C.元素值 D.非零元素个数9.快速排序在最坏情况下的时间复杂度为()。A.0(l o g2n)B.O(n l o g2n)C.0(n)D.0(n2)1 0 .从二叉搜索树中查找一个元素时、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2016 数据结构 算法 分析 习题 参考答案
限制150内