2010上学期数据结构试卷答案.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2009-2010 学年第 一 学期期末考试 《 数据结构 》试题A 参考答案 选择题(2*15=30) CBABA BCDCA CDBDA 简答题(6*6=36) 试举例说明对相同的逻辑结构,同一种运算在不同的存储方式下实现,其运算效率不同。 答:对于顺序表和单链表两种数据结构:其逻辑结构都是线性表,而存储结构分别为顺序存储与链式存储。在顺序表上进行插入操作,需要移动待插入元素之后的数据,平均次数为n/2(n为数据元素个数);而在链表上进行插入操作,则仅仅需要把待插入元素的节点连接进链表的相应位置而无需移动数据元素,插入运算的效率比顺序存储要好。从这个例子可以看出即使有相同的逻辑结构,同一运算在不同存储方式下的运算效率也是会有所不同的。 什么是顺序队列的‘假溢出’问题?给出一种解决的方案。 答:顺序队列因多次入队列和出队列操作后出现的有存储空间但不能进行入队列操作造成的溢出称为‘假溢出’。 可采取四种方法解决‘假溢出’的问题:  1)采用循环队列; 2)按最大可能的进队操作次数设置顺序队列的最大元素个数; 3)修改出队算法,使每次出队列后都把队列中剩余数据元素向队头方向移动一个位置;  4)修改入队算法,增加判断条件,当假溢出时,把队列中的数据元素向对头移动,然后方完成入队操作。 链表结构的序列适合使用折半查找么?为什么? 答:不适合。因为链表结构的存储结构式链式存储,其中每个数据元素的物理存储并不是按照线性顺序的,在折半查找寻找中间节点时,需要对链表进行顺序访问以确定中间元素;而顺序表的中间元素可以直接用公式n/2来定址,无需计算。因此链表结构进行折半查找的效率较低,不太适合使用折半查找。 串是不定长的,表示串一般有哪些方法?C语言中的串是如何表示的? 答: c串的顺序存储有两种方法:一种方法是设置一个串的长度参数,此种方法的优点是便于在算法中用长度参数控制循环过程;另一种方法是在串值的末尾添加结束标记,此种方法的优点是便于系统自动实现。链式存储也有分为单字符结点和块链两种。C语言中的串是在串尾添加结束标记的方法来表示串的。 简单说明图的最小生成树普里姆算法及克鲁斯卡尔算方法的基本思想。 答:普里姆算法思想是:令集合U的初值为U={u0}(即假设构造最小生成树时从顶点u0开始),集合T的初值为T={}。从所有顶点u∈U和顶点v∈V-U的带权边中选出具有最小权值的边(u,v),将顶点v加入集合U中,将边(u,v) 加入集合T中。如此不断重复,当U=V时则最小生成树构造完毕。克鲁斯卡尔算法思想是:每次加入能够连接两个连通分量的最小权边。 结合排序算法的衡量标准及算法设计的目标,谈谈在设计一个算法时需要注意的因素有哪些? 答:算法设计满足以下目标:a正确性;b可读性; c健壮性; d高时间效率; e高空间效率。比较排序算法优劣的标准包括: (1)时间复杂度:它主要是分析记录关键字的比较次数和记录的移动次数;(2)空间复杂度 :算法中使用的内存辅助空间的多少;(3)稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的 综合题(10+10=20) 1)解:B)a:0101, b:10, c:01000, d:11, e:011, f:000,g:01001, h:001 C) wpl = 7*4 + 26*2 + 2*5 + 28*2 + 13*3 + 10*3 + 3*5 + 11*3 = 213 2)解:邻接矩阵为: 最短路径: step A B C D E F 1 {A} Distance 0 6 ? 30 ? ? Path[] A A -1 A -1 -1 2 {A,B} Distance 0 6 8 30 ? 11 Path[] A A B A -1 B 3 {A,B,C} Distance 0 6 8 23 ? 11 Path[] A A B C -1 B 4 {A,B,C,F} Distance 0 6 8 23 29 11 Path[] A A B C||F F B 5 {A,B,C,F,D} Distance 0 6 8 23 27 11 Path[] A A B C||F D B 6 {A,B,C,F,D,E} Distance 0 6 8 23 27 11 Path[] A A B C||F D B 程序设计(8+6=14) 注:程序不唯一,主体思路正确即可。 依下图所示,完成带头结点的链式堆栈压入、弹出的函数。 解:压入函数: int StackPush(LnkStack *pS, DataType x) { LSNode *p = (LSNode *)malloc(sizeo

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档