2012年山东科技大学数据结构与操作系统--真题及参考答案.docVIP

2012年山东科技大学数据结构与操作系统--真题及参考答案.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2012年山东科技大学数据结构与操作系统--真题及参考答案.doc

数据结构与操作系统Z试卷 《数据结构》部分 (90分) 一、简答题(20分,每题5分) 1、请给出四种数据结构基本类型。 答:根据数据元素之间关系的不同特征,通常有下列4类的基本结构: 集合。。。 线性结构。。。 树形结构。。。 图状结构或网状结构。。。 2、简述栈和队列的区别。(P44;P58) 区别和联系: 从数据结构上看,栈和队列也是线性表,不过是两种特殊的线性表。 栈只允许在表的一端进行插入或删除操作, 队列只允许在表的一端进行插入操作、而在另一端进行删除操作。 因而,栈和队列也可以被称作为操作受限的线性表。 3、什么是关键路径?(P183) 在AOE网中,有些活动可以并行地运行,最短完成时间应是从源点到汇点的最长路径长度(指路径上所有权值之和),称这样的路径为关键路径。 4、插入类排序有哪几种?其中,哪些是不稳定的排序算法?(P265) 二、应用题(40分) 1、如果进栈的序列是12345,请给出所有3、4先出栈的序列(3在4之前出栈)。(5分)(P) 【解答】34215??,34251,??34521 (可以参考下面这个题: 【¥】铁路进行列车调度时,常把站台设计成栈式结构,若进站的六辆列车顺序为:1,2,3,4,5,6,?那么是否能够得到435612,?325641,?154623和135426的出站序列,如果不能,说明为什么不能;?如果能,?说明如何得到(即写出进栈或出栈的序列)。?? 【解答】输入序列为123456,不能得出435612和154623。不能得到435612的理由是,输出序列最后两元素是12,前面4个元素(4356)得到后,栈中元素剩12,且2在栈顶,不可能让栈底元素1在栈顶元素2之前出栈。不能得到154623的理由类似,当栈中元素只剩23,且3在栈顶,2不可能先于3出栈。? 得到325641的过程如下:1?2?3顺序入栈,32出栈,得到部分输出序列32;然后45入栈,5出栈,部分输出序列变为325;接着6入栈并退栈,部分输出序列变为3256;最后41退栈,得最终结果325641。? ???得到135426的过程如下:1入栈并出栈,得到部分输出序列1;然后2和3入栈,3出栈,部分输出序列变为13;接着4和5入栈,5,4和2依次出栈,部分输出序列变为13542;最后6入栈并退栈,得最终结果135426。) 2、给出先缀表达式“- + a * b – c d / e f”对应的后缀式,画出其相应的二叉树,并画出该二叉树的中序线索树。(10分)(P129) 3、某带权有向图及它的邻接表如下图所示,试写出它的广度优先搜索序列,并根据克鲁斯卡尔算法,求它的最小生成树。(10分) 广度优先搜索序列:(P167) A--B--C--D--E--F--G--H 克鲁斯卡尔算法,求最小生成树:(P173) 4、请写出应填入下列叙述中( )内的正确答案。排序有各种方法,如插入排序、快速排序、堆排序、冒泡排序等。设一数组中原有数据如下:15,13,20,18,12,60。下面是一组由不同排序方法进行一遍排序后的结果。(15分)(必须对算法的具体步骤有详细的了解,认真看看书吧P263) (①)排序的结果为:1213,15,18,20,60 (②)排序的结果为:1315,18,12,20,60 (③)排序的结果为:1315,20,18,12,60 【参考答案】①快速排序??????②冒泡排序??????③直接插入排序? 三、算法设计题(30分) 答题要求: ①用自然语言说明所采用算法的思想; ②给出每个算法所需的数据结构定义,并做必要说明; ③用C语言写出对应的算法程序,并做必要的注释。 1、已知有一个单向循环链表,其每个结点中含三个域:prior, data 和next,其中data为数据域,next为指向后继结点的指针域,prior也为指针域,但它的值为空(NULL),试编写算法将此单向循环链表改为双向循环链表,即使prior成为指向前驱结点的指针域。(15分) 2、编写算法,在二叉树中求位于中序序列中第k个位置的结点的值。(15分)(P129) 分析:实际上是在考察中序遍历,然后在中序遍历中加上一个count变量,用来计数以确定是第几个位置。(一下代码参见P131) TElemType InOrderTraverse(Bitree T, Status( * visit)(TElemType e)){ InitStack(S); p=T; Count=0; While(p|| !StackEmpty(S)){ If(p){ Push(S,p); p=p-lchild; } Else{ Pop(S,p); If(!visit(p-data)) Return error; //出栈一个数,统

文档评论(0)

三哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档