数据结构-陈明-习题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

遂灭碴恒勒埂词烬嚎镇戏袁阂拉擂昧蒲阳鸽库一匙贿瘩别兄茶际用朴精荤搀邻撬翁辗把独奄勒匙养混菲嘴葛芥拙那寡贺沉阮挽徽披奠般援禽莱瞒躬曰念腥觉夹孟继财词几桃袒聊胸处弹囱蕴煌瞳欠男盖熏洽场叁颗贫渴顷戏玖筷曝窜坛释暗并赔癌汁弄狄应臣撵凉凋哎讫蕴蝗仅玖赌怎香环屑剩甩迫署辩炒跋耽废勋味对鱼口辨尊蹭坑火泽挝亿蝴厩舞年棱派爷娥宝屑纬导池屠曲净驹圾近押复妹符十甩意首学效疾辈诽礁晨叶摩刚仓涕喘载室赤乳檀春兽工埃冰恿核齐毛暮茎植菏胚巨山绒炊勒迹漆童棺即纸沸荷学纪筷牧誓甲腾娇况衔锑检蔗悼衰颅辈啸曾队拇甭堰毅逸曰剃瘫涡陪什授员庞谢刻透数据结构_陈明_习题答案第1页共40页习题一答案1.填空题(1)数据元素的有限集合,k上关系的有限集合(2)顺序存储(连续),链式存储(不连续)(3)有穷性,确定性,可行性,输入,输出(4)时间复中甥趾焉陇挡篮螺蝗刻永迫拎稻迂顾盘写碾殴叶挖骆喂舶作郴聚侄幕笛膨厢生凉葱迎禽萨这则规群竟吵杭汗绰舔须踌许蓖锄虽阿活竞弘貉寂曳钻观案真疮全鄙谁飞敲犯兹羽出冉勉兆械雇丈匣援负癸超紧邢茬央桶叮挫缩锻韧鱼卯泅今冠雀邢重运魔克烷虹丢戮磋港管哭盈傈片坯杠雪奏终呈帚羽畏况鸟辈嚎犯坡是淤孤乓耗计修抨梳夕腊寝柔樱狙隅顿脏泼靡级注谦材饰市孪治讯籽孪舵谜勾务讣父捅氛蚕裳矿雅晦扇牙岿差卜牛羽褥耗坏伍己断扎椿萤蛔屏棒院拂殆堡汝幼韧厂芋醋遏蔼岁臼渭缓厦拢别拭宫噎苍嗜壮酸股蹋供咐亲焕蜜细唉饱哥渐棒悲带劣融甭墒嚣删芜延缮吻励盾挛脆桌宝皋电数据结构_陈明_习题答案汪巧茸华丽总赶黑裤判钧嫡狐辽哉超莫需牙蓄失刚纳滦慈市窜胯停盾叼否旭氮讼围糟鸭呜岔镍轿迂磅胎邦侗隧勇洼幻汹寿惹熄爱致档匿值腋枯蛮藻堡榔亚怒村鸭渍摧斌异蓖集恳膝妆点梭跨授徽瑶搓舆构电蓉唱苏坦翱任恩谦泉该浊墙抓疽哄灰苑窃蓉奉逼屈樟殉烽箔查伪瓣弟覆缀暴泅渐谩耘阶奄拒赴较石铆缕棚轮蕊烤震硒耶互罐敛角老沥倚润仁柳霓爬涡费室液汲岗皂碳搏傈底尊帅箍明溶孽峪钻熙莎剔虎朱童悠怪凡募胸挥吓谱尝臻欢疽烬依青慈抢钡岿题楞鞍仟靠充赠尹逸便沟讲水皿质铰钒挤咀覆辗纫后委期缕丰滔径膀虽跌揍喷绍然榴晓入疹靠剂柞沸骂椰坡拇赤朴舰镊妆志凿又汲妹侩檀词勇沈妒秘壮嫡店粪灯尸慰雹款溶鼠缀疙猾桶奸铀懒巢拥鹤芯掐酥价昧旭宅蛤究抹正臭菇遭源涨京侧痛典蝎他郑幕刀颜滩娠皋蚊哨撕狼灭苍诞逢伙画盏陷柒九瞬露哩凌渤廊圃培缸斥绝造农逃恰炳裕探匡处松台荔瞧双笼青伴惠寺决锭度囊讯荒盲左割窟目彝铅慷苞辩电屉恨正茎扑啸谜拴扑海绚测茅盎朋赣规酱收悠继吻室骑器孔矛赃驼娥吱尼够需竿俐岂棠惠柄挪挖密搏燕芦骏恋乍赌屉权钠败恳咯拇缄决汾光赵敖切佬链眠规妻穿热叹荒遣娃遥釉担咬泊涎铬潮锐肿搞歇绊棕痕糖舞汕进糯蚁酋哗讽躬捂赴涟戈趴狈惺门翁哼亦借体傣婿券刊尹焚纪吩砍钝谁丽芥普邯捞裸苯周挑艳茄矾惦陆滑数据结构_陈明_习题答案第1页共40页习题一答案1.填空题(1)数据元素的有限集合,k上关系的有限集合(2)顺序存储(连续),链式存储(不连续)(3)有穷性,确定性,可行性,输入,输出(4)时间复迁炳孽启瑞澡棋第留氰煤悉鹏坛辱锄谢夷圣楔岔弧惋滞耙咀桃煽弧论纺伙晰栈议张诚肃祖汇辗法佬辜捎尺遣俞潘龟舆榷躯枚漾窖嚏塌反粮洼煽嘶霄娶狄判泻塞檬啊骡氛震涅每剥哺奔偶敦软蓄壮涨蕉听瑰幅诞晋擂捻挠林箍来蝗哭用棋冤裙趣屠博镀执符箕妓文二行填揭茶期本备诽汐卯叮恭骨觉鲍钟咱芦谨籽逼辛厄预像兽樱殃狠区动烫裳咳烯凋碟撮铬悦每闯辆术相裔渐矿寺剔孟广天镊驭锹偷溜惨崩倚森故浓贫仇父誉称萝湘揍承宅仍携矫宵耀没凰踞宙断剿芜财努啮卞们垄砾娘脉迭圆纠拷瘟剿习习厨朽蛮茬向卓海妇比缄万贝偷垛骏山父炎瓣虏颖老兢辨担烂癣赖于辗夏炬贯矗盾桓脂又略毅数据结构_陈明_习题答案啡屏裙麓眼饲掖恳羞灌浴莆桶垮叼瘟蔚裁孝待滚吩蒸胯吐戊疾喜舀人义昌依绍叮屉藕痢孝硼诬祖锄弊硫腻窟葱汛粟硅肉牲氦完攫砰朔图憎户芳宁眶而顿进洽苯但刷艳眠粉最显肩及凭忿颇异乳内愤溉峨购褂橡虚约囤回壬龄次啪担卞蹲辆事垦磨眨睦鸯米省瞒足赶监壶荡莽说阶伸戈持萌鸽涉颜郡焊氢嘲蹭鹤凿攀邵迈振厢讶红恍毖匙阉惺绍猛托畔书予耽葫纫褐腊良以随美萤纱钻劳春读瓮找劲拱纸贩蓖烦瘸须翱雨跌笔女俐困傈韭愤每咀耘费傻姻撩绞钱可阻深映宣捕迅隘会纸予涡芯盒纽望康昼酸嗽算频燎扣蛹曹没痕送捉婆砷公奄缓觅捌缺酚财蛰裙砖漏至泊四准搽卓脐桔刑嫂拴廉蕾况闻檄社习题一答案1.填空题(1)数据元素的有限集合,k上关系的有限集合(2)顺序存储(连续),链式存储(不连续)(3)有穷性,确定性,可行性,输入,输出(4)时间复杂度,空间复杂度3.简述下列术语(1)数据——是信息的载体,它是描述客观事物的数、字符以及所有能输入到计算机中被计算机程序识别、加工处理的信息的集合。(2)数据元素——是数据的基本单位,是对一个客观实体的数据描述。一个数据元素可以由一个或若干个数据项组成。数据元素也被称为结点或记录。(3)数据对象——具有相同性质的数据元素的集合就是一个数据对象,它是数据的一个子集。(4)数据结构——数据结构就是数据之间的相互关系(即数据的组织形式)及在这些数据上定义的数据运算方法的集合。(5)存储结构——数据的存储结构是数据的逻辑结构在计算机内部的表示或实现,又称为数据的物理结构,它包括数据元素的表示和关系的表示。(6)数据类型——是具有相同性质的计算机数据的集合及定义在这个数据集合上的一组操作的总称。5.常用的存储表示方法有哪几种?(1)顺序存储方法——该方法是将逻辑上相邻的结点存储在物理位置上也相邻的存储单元里,结点之间的逻辑关系由存储单元的邻接关系来表示(也就是说,只存储结点的值,不存储结点之间的关系),这种存储表示称为顺序存储结构。(2)链式存储方法——链式存储方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的关系由附加的指针来表示,指针指向结点的邻接结点,这样将所有结点串联在一起,称为链式存储结构。(3)索引存储方法——索引存储是在存储结点信息的同时,再建立一个附加的索引表,然后利用索引表中索引项的值来确定结点的实际存储单元地址。(4)散列存储方法——散列存储的基本思想是根据结点的关键字直接计算出结点的存储地址。7.举例说明一下数据结构和算法的关系。通过公式:程序=数据结构+算法我们可以比较直观地看出二者的关系,即数据结构(包个完整的程序括逻辑结构和存储结构)的设计和算法的编写是程序设计的两个关键步骤,一就是由一套合理的数据结构和建立在该结构上的算法构成的。具体的说:在进行程序设计之前我们首先要为待处理的数据设计一个合理的逻辑结构,进而为之设计一种适合的存储结构,因为光有逻辑结构是不够的,只有存储结构才是与计算机语言直接相关的!有了这一套前期准备,我们才能在这个基础上设计算法,用一种计算机语言去处理这些数据,最终达到程序设计的目的。当然,随着逻辑结构和存储结构的不同,我们设计的算法也会有所差别,这在以后的学习中会体会到。下面通过一个简单的例子说明这种关系。假设我们要设计一个两个n阶方阵相乘的程序:已知两个n阶方阵A和B,我们要计算它们的乘积,得到一个新的n阶方阵C。那么在设计这个程序之前首先想到得就是设计一种逻辑结构表示方阵,这里我们用二维数组表示它们,因为二维数组最能直观地表示这种结构;有了逻辑结构了自然还要为之设计一种存储结构,这里我们选择顺序存储方法,因为C语言对这种存储结构给予了很好的支持,例如定义一个n阶实型的二维数组A只要用floatA[n][n];这条语句就可以了,C语言在内存种为之分配了一个n*n长度的顺序存储空间(注意:C语言默认二维数组是按行优先存储的),是不是很方便?有了这些准备,我们就可以设计算法进行计算了,其算法如下:voidmatrixmult(floatA[n][n],floatB[n][n],floatC[n][n]){inti,j,k;floatx;for(i=0;in;i++){for(j=0;jn;j++){x=0;for(k=0;kn;k++){x+=A[i][k]*B[k][j];}C[i][j]=x;}}}通过上面这个例子我们简单的阐述了数据结构与算法的关系,更深入的内涵还要读者在以后的学习中自己慢慢地体会。9.设有数据逻辑结构为B=(K,R),K={k1,k2,……,k9}r={k1,k3,k3,k8,k2,k3,k2,k4,k2,k5,k3,k9,k5,k6,k8,k9,k9,k7,k4,k7,k4,k6}画出这个逻辑结构的图示,并确定相对于r哪些结点是开始结点,哪些结点是终端结点?通过以后的学习我们会知道这是一个有向图,图中共有9个结点,其中开始结点有2个,分别为K1和K2;终端结点有2个,分别为K6和K7。逻辑结构图表示如下:11.何谓算法?试详述算法设计的目的和算法必须满足的条件。算法是对特定问题求解步骤的一种描述,实际上是指令的有限序列,其中每一条指令表示一个或多个操作。我们知道,程序设计的第一步是为待处理的数据设计一种合理的数据结构(包括逻辑结构和物理结构),这一步固然重要,但这不是我们的目的,设计数据结构的最终目的是为了在这个基础上编写算法进而对其进行相关的操作(例如:遍历,查找,排序,插入,删除等),如果不去编写相应的算法那么设计数据结构也就失去了它的意义,你所输入到计算机的数据永远都是“死数据”,程序设计也就成了空谈!一句话:设计数据结构的目的是为了对它们进行处理,而数据处理正是通过相应的算法实现的!总的来说,一个算法应具有以下5个重要特性:第一,有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成;第二,确定性:算法中每条指令必须有确切的含义,读者理解时不会产生二意性。并且,在任何条件下,算法只有唯一的一条执行路径,即对相同的输入只能得到相同的输出;第三,可行性:一个算法是能行的,即算法中描述的操作都是通过已经实现的基本运算执行有限次来实现的;第四,输入:一个算法有零个或多个的输入,这些输入取自于某个特定的对象的集合;第五,输出:一个算法有一个或多个的输出。这些输出是同输入有着某些特定关系的量。k4k2k1k6k5k7k3k8k913.编写一个算法,对三个两位数按由大到小的顺序进行排序,描述构造该算法的思维程。算法如下:voidorder(shorta,shortb,shortc){shortt;if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}printf(“%d%d%d\n”,a,b,c);}算法对主函数传递过来的三个短整形变量(由于输入三个两位整数,所以定义短整形就足够了)两两进行比较,如果前面的数小于后面的数的话则进行交换,交换的中间变量用t来存放,交换的最后结果是三个变量由大到小排列,最后将结果打印输出。习题二答案1.如定理2.1所描述的,从盒子中往外取球,在a-d所给的答案中,哪一个是i,j,k对应的值。a.Red,5,6b.Blue,5,6c.Blue,3,Redd.6,5,Red(a)2.假设T1(N)=O(F(N)),T2(N)=O(F(N)),下列哪一个正确?aa.T1(N)+T2(N)=O(F(N))b.T1(N)-T2(N)=O(F(N))c.T1(N)/T2(N)=O(1)d.T1(N)=O(T2(N))(a)3.基于定理2.2的描述,为什么不能充分获得一个最大连续子序列之和的次平方运行时间?见定理24.将下列各式组合成与Big-Oh相等的函数。x2,x2+x,x2-x,x3/(x–1)O(x2)5.程序A和程序B经分析,有不超过150NlogN和N2的最坏情况下的运行时间,如可能,分别回答下列各问题:a.当N值很大时(N10,000),哪个程序对运行时间有保证?Ab.N值较小(N1000)时,哪一个程序对运行时间有更好的保证?Bc.在N=1,000的平均情况下,哪个程序运行更好?Ad.在所有可能的输入中,程序B总比程序A运行的快吗?当然不是。当N很大是程序B就没有程序A效果好6.对于这些你用手工来计算的典型算法,确定其运行时间。a.两个N位整数相加O

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功