数据结构课后习题参考答案完整版资料_第1页
数据结构课后习题参考答案完整版资料_第2页
数据结构课后习题参考答案完整版资料_第3页
数据结构课后习题参考答案完整版资料_第4页
数据结构课后习题参考答案完整版资料_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5 .选择题:CCBDCA6 .试分析下面各程序段的时间复杂度。(1) O(1)(2) O(m*n)(3) O(n2)(4) O(log3n)(5)因为x+共执行了n-1+n-2+1=n(n-1)/2,所以执行时间为O(n2)(6)O(.n)第2章线性表1 .选择题babadbcabdcddac2 .算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。ElemTypeMax(LinkListL)if(L->next=NULL)returnNULL;pmax=L->next;法设计题(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“

2、good”不是回文。试写一个算法判定给定的字符向量是否为回文。(提示:将一半字符入栈)?根据提示,算法可设计为:合应用题(1)已知模式串t='abcaabbabcab'写出用KM附求得的每个字符对应的next和nextval函数值。存放该数组所需多少单元?存放数组第4列所有元素至少需多少单元?数组按行存放时,元素A7,4的起始地址是多少?数组按列存放时,元素A4,7的起始地址是多少?每个元素32个二进制位,主存字长16位,故每个元素占2个字长,行下标可平移至1到11。(1)242(2)22(3)s+182(4)s+142(4)请将香蕉banana用工具H()Head(),T()

3、Tail()从L中取出。L=(apple,(orange,(strawberry,(banana),peach),pear)H(H(T(H(T(H(T(L)(5)写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为A-Z这26个字母和0-9这10个数字)。voidCount()/统计输入字符串中数字字符和字母字符的个数。inti,num36charch;/初始化表示输入字符串结束。/算法结束。if('0'<=ch<='9')i=ch48;numi+elseifforfor;(,A,<=ch<=,Z,)i

4、=ch-65+10;numi+printf/数字字符;/字母字符(i=0;i<10;i+)/输出数字字符的个数printf("数字%d的个数=%dn”,i,numi);(i=10;i<36;i+)/求出字母字符的个数(“字母字符%c的个数=%dn",i+55,numi);第5章树和二叉树1 .选择题ADDCACCBDCCCACC2 .应用题(2)设一棵二叉树的先序序列:ABDFCEGH,中序序列:BFDAGEHC画出这棵二叉树。画出这棵二叉树的后序线索树。将这棵二叉树转换成对应的树(或森林)O(2)试设计另一种由二进制表示的编码万暮(3)假设用于通信白电文仅由8

5、个字母组成,字母在电文中出现的频率分别为,试为这8个字母设计赫夫曼对于上述实例,比较两种方案的优缺点解:方案1;哈夫曼编码先将概率放大100倍,以方便构造哈夫曼树。w=7,19,2,6,32,3,21,10,按哈夫曼规则:(2,3),6,(7,10)1,19,21,32197(40)2111字母编P对应编码出现频率1110042001、1一端馅三三作为-11a标存储4士杓铝41110510万案万案Jwpl夕+4+5+=+=2的物Pl编码3+=3123出现频率吉论:哈夫.3.算一设I*题写以下算法3(1)统intLea001010计二叉杈他叶结点个011fNodeCoUnt(BiTreeT)00

6、-6if(T=NULL)101for(i=0;i<36;i+)numiwhile(ch=getchar()!='#')/return0;/如果是空树,则叶子结点个数为0elseif(T->lchild=NULL&&T->rchild=NULL)return1;/判断该结点是否是叶子结点(左孩子右孩子都为空),若是则返回1elsereturnLeafNodeCount(T->lchild)+LeafNodeCount(T->rchild);(3)交换二叉树每个结点的左孩子和右孩子。voidChangeLR(BiTree&T)B

7、iTreetemp;if(T->lchild=NULL&&T->rchild=NULL)return;elsetemp=T->lchild;T->lchild=T->rchild;T->rchild=temp;ChangeLR(T->lchild);ChangeLR(T->rchild);1.选择题CBBBCBABAADCCDDB2.应用题(1)已知如图所示的有向图,请给出:每个顶点的入度和出度;邻接矩阵;邻接表;逆邻接表。(2)已知如图所示的无向网,请给出:邻接矩阵;邻接表;ab4c3ba4c5d5ca3b5d5db5c5e7e

8、b9d7f3Afd6e3g2Agd5f2h6Ahc5d4g6Ae9h5f6图无向网4A最小生成树D、弋点i=1i=2i=3i=4i=5i=6b15(a,b)15(a,b)15(a,b)15(a,b)15(a,b)15(a,b)c2(a,c)d12(a,d)12(a,d)11(a,c,f,d)11(a,c,f,d)eoo10(a,c,e)10(a,c,e)foo6(a,c,f)gooOO16(a,c,f,g)16(a,c,f,g)卫(acf.d.g)S终点集a,ca,c,fa,c,f,ea,c,f,e,da,c,f,e,d,ga,c,f,e,d,g,b(3)已知图的邻接矩阵如所示。试分别画出自顶

9、点1出发进行遍历所得的深度优先生成树和广度优先生成树。(4)有向网如图所示,试用迪杰深度优先生成树广度优先生成树斯特拉算法求出从顶点a到其他各顶点间的最短路径,完成表。第7章查找1 .选择题CDCABCCCDCBCADA2 .应用题(1)假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题: 画出描述折半查找过程的判定树; 若查找元素54,需依次与哪些元素比较? 若查找元素90,需依次与哪些元素比较?假定每个元素的查找概率相等,求查找成功时的平均查找长度。先画出判定树如下(注:mid=(1+12)/2=6):3063424547295查找

10、元素54,需依次与30,63,42,54元素比较;查找元素90,需依次与30,63,87,95元素比较;求ASL之前,需要统计每个元素的查找次数。判定树的前3层共查找1+2X2+4X3=17次;但最后一层未满,不能用8X4,只能用5X4=20次,所以ASL=1/12(17+20)=37/12"(2)在一棵空的二叉排序树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4,请画出所得到的二叉排序树。12、2111621/4913验算方法:用中序遍历应得到排序结果:2,4,7,9,11,12,13,16,17,21(5)设哈希表的地址范围为017,哈希函数为:H(ke

11、y)=key%16。用线性探测法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49),构造哈希表,试回答下列问题:画出哈希表的示意图; 若查找关键字63,需要依次与哪些关键字进行比较? 若查找关键字60,需要依次与哪些关键字比较?假定每个关键字的查找概率相等,求查找成功时的平均查找长度。画表如下:012345678910111213141516173217634924401030314647查找63,首先要与H(63)=63%16=15号单元内容比较,即63vs31,no;然后顺移,与46,47,32,17,63相比,一共比较了6次!查找60,首先要与

12、H(60)=60%16=12号单元内容比较,但因为12号单元为空(应当有空标记),所以应当只比较这一次即可。对于黑色数据元素,各比较1次;共6次;对红色元素则各不相同,要统计移位的位数。“63”需要6次,“49”需要3次,“40”需要2次,“46”需要3次,“47”需要3次,所以ASL=1/11(6+2+3X3+6)=23/11(6)设有一组关键字(9,01,23,14,55,20,84,27),采用哈希函数:H(key)=key%7,表长为10,用开放地址法的二次探测法处理冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。散列地址0123456789关键字140192384

13、275520比较次数11123412平均查找长度:ASLucc=(1+1+1+2+3+4+1+2)/8=15/8以关键字27为例:H(27)=27%7=6(冲突)H产(6+1)%10=7(冲突)H2=(6+22)%10=0(冲突)H3=(6+33)%10=5所以比较了4次。第8章排序1 .选择题CDBDCBCDBCBCCCA2 .应用题(1)设待排序的关键字序列为12,2,16,30,28,10,16*,20,6,18,试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。222222222102166212261022222222126281816*直接插入排序折半插入排序希尔排序(增

14、量选取5,3,1)冒泡排序快速排序简单选择排序堆排序二路归并排序直接插入排序121630281016*20121630281016*20121630281016*20121628301016*20101216283016*2010121616*28302010121616*202830610121616*2028610121616*1820折半插入排序排序过程同希尔排序(增量选取5,3,1)6181216*20302810181616*203028121616*18202830冒泡排序1216281016*20612161016*2061812101616*61820101216616*182

15、0101261616*1820106121616*1820610121616*1820610121616*1820快速排序621012283016*20261012283016*20261012181616*20:26101216*16182026101216*16182061861861861861861861830182830(增量选取(增量选取(增量选取18302830283028302830283028302830161816182830283028305)3)1)22222222儿J厅列处IV律皮刃I)后厅列处IV律皮7简单选择排序121630281016*2061630281016

16、*2061030281616*2061012281616*2061012162816*20610121616*2820610121616*1820610121616*1820361212303030302818181818181828302610121616*18202830二路归并排序2121630102816*2061821216301016*2028618210121616*2028306182610121616*18202830堆排序第一步,形成初始大根堆(详细过程略),第二步做堆排序。交换1与9对象从1到8重新形成堆218181612161261016*2121016*303016*16*1216121626101826101830301016121612102616*182616*18202830202830612121061021616*18216167重新形成堆1到6重新形成堆1到5重新形成堆20282028202820282830交换1与5对象从1到4重新形成堆12610121616*18202830交换1与4对象1062121616*18202830从1到3重新形成堆交换1与3对象从1到2重新形成堆交换1与2对象得到结果3 .算法设计题(1)试以单链表为存储结构,实现简单选择排序算法。;若要交换指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论