数据结构与算法复习题10(C语言版)(7页).doc

上传人:1595****071 文档编号:36344130 上传时间:2022-08-26 格式:DOC 页数:7 大小:90KB
返回 下载 相关 举报
数据结构与算法复习题10(C语言版)(7页).doc_第1页
第1页 / 共7页
数据结构与算法复习题10(C语言版)(7页).doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《数据结构与算法复习题10(C语言版)(7页).doc》由会员分享,可在线阅读,更多相关《数据结构与算法复习题10(C语言版)(7页).doc(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-习题9解答判断题:1用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度。答:FALSE (错。链表表示的有序表不能用折半查找法。)2.有n个数据放在一维数组A1.n中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度不同。答:FALSE (错。因顺序查找既适合于有序表也适合于无序表;对这两种表,若对于每个元素的查找概率相等,则顺序查找的ASL相同,并且都是(n+1)/2;对于查找概率不同的情况,则按查找概率由大到小排序的无序表其ASL要比有序表的ASL小。)3.折半查找是先确定待查有序表记录的范围,然后逐步缩小范围,直到找到或找不到该记录为止。( )答:TRUE4.哈希表的

2、查找效率主要取决于哈希表哈希表造表时选取的哈希函数和处理冲突的方法。答:TRUE5.查找表是由同一类型的数据元素(或记录)构成的集合。答:TRUE单选题:6.对于18个元素的有序表采用二分(折半)查找,则查找A3的比较序列的下标为( )。 A. 1、2、3 B. 9、5、2、3 C. 9、5、3 D.9、4、2、3答:D (第一次 = 9,第二次 = 4,第三次 = 2, (第四次 = 3,故选D.7. 顺序查找法适合于存储结构为_的线性表。A.散列存储 B.顺序存储或链式存储C.压缩存储 D.索引存储答:B8.对线性表进行二分查找时,要求线性表必须( )。 A以顺序方式存储 B. 以链接方式

3、存储 C以顺序方式存储,且结点按关键字有序排序 D. 以链接方式存储,且结点按关键字有序排序答:C9.设哈希表长m=14,哈希函数为H(k) = k MOD 11。表中已有4个记录(如下图所示),如果用二次探测再散列处理冲突,关键字为49的记录的存储地址是( )。 0 1 2 3 4 5 6 7 8 9 10 11 12 1315386184 A8 B. 3 C5 D. 9答:D (计算H(k),即H(49)=49 mod 11 = 5,冲突,进行二次探测再散列。而二次探测再散列的增量序列为:d=1,-1,2,-2,3,土k,(km/2), 沿着增量序列选择不同的增量按照开放定址公式:H( H

4、(key)+d) MOD m i1,2,k (km-1)寻找新的地址(构造后继散列地址)。计算H( H(49)+d) MOD 14 (5+d) MOD 14, 可知当( 5+2) MOD 14 = 9 MOD 14 = 9时不再发生冲突,故选择D).10.以下说法错误的是( )。 A散列法存储的基本思想是由关键码值决定数据的存储地址 B. 散列表的结点中只包含数据元素自身的信息,不包含任何指针 C装填因子是散列法的一个重要参数,它反映了散列表的装填程度 D. 散列表的查找效率主要取决于散列表造表时选取的散列函数和处理冲突的方法答:B (散列表也可以用单链表存储,故选择B.)11.以下说法正确的

5、是( )。 A数字分析法需事先知道所有可能出现的键值及所有键值的每一位上各数字分布情况,并且键值的位数比散列地址的位数多 B除余法要求事先知道全部键值 C平方取中法需要事先掌握键值的分布情况 D随机数法适用于键值不相等的场合答:A.12.设有一个用线性探测法解决冲突得到的散列表如下图所示,散列函数为H(k)= k % 11,若要查找元素14,探测的次数是( )。 T: 0 1 2 3 4 5 6 7 8 9 10 13 25 80 16 17 6 14A8 B. 9 C3 D. 6答:D13.散列表的平均查找长度( )。 A与处理冲突方法有关而与表的长度无关 B与处理冲突方法无关而与表的长度有

6、关 C与处理冲突方法有关且与表的长度有关 D与处理冲突方法无关且与表的长度无关答:C14.在采用线性探测法处理冲突所构成的闭散列表上进行查找,可能要探测多个位置,在查找成功的情况下,所探测的这些位置上的键值( )。A一定都是同义词 B. 一定都不是同义词 C都相同 D. 不一定都是同义词答:D(例如,当H(k)=k mod 7且输入的关键字为3、4、10时所构造的散列表如下图所示: 0 1 2 3 4 5 6 3 4 10 当查找关键字成功时,所探测3、4、5位置上的键值:3和10是同义词而4不是同义词。)15.在采用线性探测法处理冲突的闭散列表上,假定装填因子的值为0.5,则查找任一元素的平

7、均查找长度为( )。 A1 B. 1.5 C. 2 D. 2.5答:B (注:线性探测再散列的哈希表查找成功时的平均查找长度为S (1 + ) (9-27) 参见严蔚敏等(c语言版)数据结构P.261公式9-27。 )16.在采用链接法处理冲突的散列表上,假定装填因子的值为4,则查找任一元素的平均查找长度为( )。 A3 B. 3.5 C. 4 D. 2.5答:A (链地址法处理冲突的哈希表查找成功时的平均查找长度为 S 1+ (9-29)参见严蔚敏等(c语言版)数据结构P.261公式9-29。)填空题:17.二分查找的存储结构仅限于 ,且是 。答:顺序存储结构 有序的18. 在n个记录的有序

8、顺序表中进行折半查找,最大的比较次数是 。答: +1 (相当于走了一个完全二叉树根到树叶的长度,即+1;故填+1.)19.构造哈希(Hash)函数的方法有 、 、 、 、 和 。答:直接定址法 数字分析法 平方取中法 折叠法 除留余数法 随机数法20. 法构造的哈希函数肯定不会发生冲突。 (重大2000年研究生试题。)答:直接定址 (参见严蔚敏等(c语言版)数据结构P.253)21.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是 。答:哈希表查找法22.在散列存储中,装填因子的值越大,则 ;的值越小,则 。答:存取元素时发生冲突的可能性就越大 存取元素时发生冲突的可能性就越小简答题

9、:23.比较线性探测、随机探测和链地址法解决冲突的优缺点。解:线性探测:简单,但可能导致记录的聚集而使探测效率降低;此外记录的个数必须在哈希表允许的范围内。随机探测:可以克服记录聚集的现象,但需要选取合适的随机函数且记录的个数也有限制。链地址法:只要空间允许就可插入任意多个记录,并且链表的插入和删除都很方便。24.在哈希表存储中,发生哈希冲突的可能性与哪些因素有关?为什么?答:在哈希表存储中,发生哈希冲突的可能性与装填因子、所采用的哈希函数、解决冲突的哈希冲突函数三个因素有关。这是因为:(1)装填因子是哈希表中已存入的数据元素n与哈希地址空间大小m的比值,即n/m,显然,当越小时,冲突的可能性

10、就越小,越大(最大可取1)时,冲突的可能性就越大;(2)若哈希函数选择得当,就可使哈希地址尽可能均匀地分布在哈希地址空间上,从而减少冲突的发生;否则,若哈希函数选择不当,就可能使哈希地址集中于某些区域,从而加大冲突的发生;(3)若哈希冲突函数选择得当,可以减少再次发生哈希冲突的可能性。25. 对含有n个数据元素的集合,要找出最大元素和最小元素,请问最少需要多少次比较运算(执行if语句的次数)。答:我们可以设立两个变量max和min用于存放最大元素和最小元素的位置,第一次取两个元素进行比较,大的放入max,小的放入min,从第2次开始,每次取一个元素先和max比较,如果大于max则以它替换max

11、,并结束本次比较;若小于max则再与min相比较,在最好的情况下,一路比较下来都不用和min相比较,所以这种情况下,至少要进行n-1次比较就能找到最大元素和最小元素。(最坏情况下,要进行2n-3次比较才能结果)26请问:对有序的单链表能否进行折半查找?为什么?答:有序的单链表不能进行折半查找的。因为链表无法进行随机访问,如果要访问链表的中间结点,就必须先从头结点开始进行依次访问,这就要浪费很多时间,还不如顺序查找,而且,用链存储结构将无法判定折半的过程是否结束,因此无法用链表实现折半查找。27设有序表为(1、23、34、55、56、57、77、87、99)请分别画出对给定值23,56,98进行

12、折半查找的过程。(并注明每次循环的各参数变量的结果)答:23的查找过程如下(其中括号表示当前查找区间,圆括号表示当前比较的关键字)下标: 1 2 3 4 5 6 7 8 9第一次比较: 1 23 34 55(56)57 77 87 99low=1high=9mid=5第二次比较: 1(23)34 55 56 57 77 87 99low=1high=4mid=256的查找过程如下(其中括号表示当前查找区间,圆括号表示当前比较的关键字)下标: 1 2 3 4 5 6 7 8 9第一次比较: 1 23 34 55(56)57 77 87 99low=1high=9mid=598的查找过程如下(其中

13、括号表示当前查找区间,圆括号表示当前比较的关键字)下标: 1 2 3 4 5 6 7 8 9第一次比较: 1 23 34 55(56)57 77 87 99low=1high=9mid=5第二次比较: 1 23 34 55 56 57 (77) 87 99low=6high=9mid=7第三次比较: 1 23 34 55 56 57 77(87) 99low=8high=9mid=8 第四次比较: 1 23 34 55 56 57 77 87(99)low=9high=9mid=9第五次比较: 1 23 34 55 56 57 77 87 99low=9high=8lowhigh 查找不成功。

14、计算题:28.设有一组关键字19,01,23,14,55,20,84,27,68,11,10,77,采用哈希函数H(key)=key % 13,采用开放地址法(开放定址法)的二次探测再散列方法解决冲突,试在018的散列地址空间中对该关键字序列构造哈希表。解:依题意,n=19,二次探测再散列的下一地址计算公式为:其计算如下:H(19)=19 % 13 =6H(01)=01 % 13 =1H(23)=23 % 13 =10H(14)=14 % 13 =1(冲突)H(14)=(1+1*1) % 19 =2H(55)=55 % 13 =3H(20)=20 % 13 =7H(84)=84 % 13 =6

15、(冲突)H(84)=(6 + 1*1) % 19 =7(仍冲突)H(84)=(6 - 1*1) % 19 =5H(27)=27 % 13 =1(冲突)H(27)=(1+1*1) % 19 =2(冲突)H(27)=(1-1*1) % 19 =0H(68)=68 %13 =3(冲突)H(68)=(3+1*1) %19 =4H(11)=11 % 13 =11H(10)=10 % 13 =10(冲突)H(10)=(10+1*1) % 19 =11(仍冲突)H(10)=(10-1*1) % 19 =9H(77)=77 %13 =12因此:各关键字的记录对应的地址分配如下:addr(27) = 0addr

16、(01) = 1addr(14) = 2addr(55) = 3addr(68) = 4addr(84) = 5addr(19) = 6addr(20) = 7addr(10) = 9addr(23) = 10addr(11) = 11addr(77) = 12其他地址为空。算法设计题:29.已知某哈希函数的装载因子小于1,哈希函数H(key)为关键字(标识符)的第一个字母(小写)在字母表中的序号,处理冲突的方法为线性探测开放定址法,试编写一个按第一个字母的顺序输出哈希表中所有关键字的算法。参考解法:(开放定址哈希表的存储结构参见(c语言版)数据结构P.259.)void Print_Hash

17、(HashTable H)/按第一个字母顺序输出Hash表中的所有关键字,其中处理冲突采用线性探测开放定址法for(i=1;i=26;i+)for(j=i; H.elemj.key; j=(j+1) % hashsizeH.sizeindex) /线性探测if( H(H.elemj.key)= =i) printf(%sn,H.elemj); / Print_Hash int H(char *s) / 求Hash函数值 if(s) return s0- 96; / 求关键字第一个字母的字母序号(小写)/ s0的值为关键字的第一个字母,000096为ASCII码表中前部非小写字母/ 部分的字符编码。字母a的ASCII编码是097,字母b的ASCII编码是098,。else return 0; / H -第 7 页-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com